Как преобразовать результат 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);
}