0
我已经搜索和搜索并找不到任何答案。希望你们都能有所帮助。C#实体框架MVC Web API
我在C#中构建了一个MVC WebAPI应用程序。
我加入了使用实体框架的数据库连接和我能够把它和加载变量与数据。
我的问题是,我试图返回JSON格式的数据(我已经添加的代码行到我的WebApiConfig.cs文件默认为text/html)。
这里是我的代码:
public string Get(string id)
{
string userName = id.ToString();
using (var db = new SDCLogins())
{
var query = from logins in db.logins
join loginTypes in db.loginTypes on new { loginType = logins.loginType } equals new { loginType = loginTypes.loginTypeID }
where
logins.uname == userName
select new
{
logins.login1,
startDate = SqlFunctions.DatePart("mm", logins.startDate) + "/" +
SqlFunctions.DateName("dd", logins.startDate) + "/" +
SqlFunctions.DateName("yyyy", logins.startDate),
stopDate = SqlFunctions.DatePart("mm", logins.stopDate) + "/" +
SqlFunctions.DateName("dd", logins.stopDate) + "/" +
SqlFunctions.DateName("yyyy", logins.stopDate),
createdDate = SqlFunctions.DatePart("mm", logins.createdDate) + "/" +
SqlFunctions.DateName("dd", logins.createdDate) + "/" +
SqlFunctions.DateName("yyyy", logins.createdDate),
logins.createdBy,
loginTypes.loginDescription
};
return Json.Encode(query);
}
}
当我执行我得到的回应是比任何JSON不同我见过之前:
"[{\"login1\":\"akamau001\",\"startDate\":\"1/24/2014\",\"stopDate\":\"//\",\"createdDate\":\"10/3/2014\",\"createdBy\":\"ozzie\",\"loginDescription\":\"Login Type 1\"},{\"login1\":\"123D56\",\"startDate\":\"1/1/1900\",\"stopDate\":\"//\",\"createdDate\":\"10/3/2014\",\"createdBy\":\"ozzie\",\"loginDescription\":\"Login Type 2\"}]"
首先的//是我的方式处理日期,任何有关如何使这些返回null值得赞赏。其次为什么一切都以“\”逃脱?有什么办法可以解决这个问题吗?
MVC!=的WebAPI ... – 2014-10-20 21:11:13
你这个得太多。 WebApi不要求你返回原始的JSON,你应该返回字面类型,这些将被序列化成JSON。 – 2014-10-20 21:11:19
对于日期,我会创建一个具有'DateTime?'属性的viewmodel类。当你从数据库模型映射到视图模型时,分配null或使用['DateTime.ToString(string format)'](http://msdn.microsoft.com/en-us/library/zdtaw1bw(v = vs.110) .aspx)而不是该字符串连接。 – 2014-10-20 21:17:05