Как преобразовать результат LINQ в JSON и передать его в View в MVC3
В моем контроллере у меня есть следующий код
public ActionResult
{
var roomdetails = db.RoomDetails.Include(r => r.RoomType).Include(r => r.FloorNames);
roomdetails = roomdetails.OrderByDescending(s => s.FloorNames.FloorName);
return View(roomdetails.ToList());
}
Но я хочу отправить данные о комнатах как объект json, чтобы я мог использовать jquery, чтобы поймать запрос и сделать дальнейшую динамическую обработку в моем представлении. Так как преобразовать номера в json-объект. Пожалуйста, помогите мне...
Ответы
Ответ 1
Примечание. Используйте Newtonsoft.Json.dll версию 8.0.2
возвращает экземпляр этого класса к вашему методу контроллера.
public class ActionResult_Json : System.Web.Mvc.ActionResult
{
public object To_Serialize_Object { get; set; }
public ActionResult_Json(object To_Serialize_Object)
{
this.To_Serialize_Object = To_Serialize_Object;
}
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.ContentType = "application/json";
//serialize object to string
string Serialized_Object_String = Newtonsoft.Json.JsonConvert.SerializeObject(To_Serialize_Object, new Newtonsoft.Json.JsonSerializerSettings()
{
ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore,
});
//write json to response stream
context.HttpContext.Response.Write(Serialized_Object_String);
}
}
Ответ 2
Просто верните JsonResult:
public JsonResult Index()
{
var roomdetails = db.RoomDetails.Include(r => r.RoomType).Include(r => r.FloorNames)
.OrderByDescending(s => s.FloorNames.FloorName);
return Json(roomdetails.ToList(), JsonRequestBehavior.AllowGet);
}
Вам понадобится ваш jquery для обработки json так, как вы хотите, и отобразите то, что хотите. Обычно это хорошо работает, если он вызвал из вашего представления через ajax.
Ответ 3
@{
ViewBag.Title = "Index";
}
Прием
$ (document).ready(function() {
$.getJSON('/Прием/Индекс1', функция (данные) {
console.log(данные);
if (data.success) {
предупреждение ( "Хай" );
//ShowStockQuote (данные);
}
else {
предупреждение ( "faliure" );
}
});
});
@Html.ActionLink( "Создать новый", "Создать" )
Ответ 4
Вы можете попробовать это.
public JsonResult Index()
{
var roomdetails = db.RoomDetails.Include(r => r.RoomType).Include(r => r.FloorNames);
roomdetails = roomdetails.OrderByDescending(s => s.FloorNames.FloorName);
return Json(roomdetails.ToArray(), JsonRequestBehavior.AllowGet);
}