Я искал и искал и не могу найти ответы. Надеюсь, вы все можете помочь.C# Entity Framework MVC Web API
Я создаю приложение MVC WebAPI на C#.
Я добавил соединение DB с использованием Entity Framework и могу вызвать его и загрузить переменную с данными.
Моя проблема в том, что я пытаюсь вернуть данные в формате 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 ... –
Вы слишком задумываетесь об этом. WebApi не требует, чтобы вы возвращали сырой JSON, вы должны возвращать литералы, и они будут сериализованы в JSON. –
В течение дат я бы создал класс viewmodel с свойствами 'DateTime?'. Когда вы переходите из модели db в viewmodel, присваиваете значение null или используйте ['DateTime.ToString (строковый формат)'] (http://msdn.microsoft.com/en-us/library/zdtaw1bw (v = vs.110) .aspx) вместо этой конкатенации строк. –