Изменение ActionResult из Controller.View(объектная модель) при возврате JSON

Укороченная версия:

Как работает System.Web.MVC.Controller.View(объект)?

Длинная версия:

Мне нужно добавить в результаты JSON произвольную строку ( Unparsable Curft).

В чем я не уверен, так это в том, как я могу изменить ViewResult в ASP.NET MVC "конвейере". Я прочитал документы MSDN по этому вопросу, но мне все еще неясно, как к этому подойти.

  • Как View(Object) возвращает строку JSON в этом случае?

Образец контроллера

    [GridAction]
    public ActionResult _SelectBatchEditingGrid(int? id)
    {
        // GridModel is of type IEnumerable if that matters.
        // More info on the GridModel type see: http://www.telerik.com/help/aspnet-mvc/t_telerik_web_mvc_gridmodel_1.html

        return View(new GridModel(SessionProductRepository.All())
    }

Посмотреть образец

   <% Html.Telerik().ScriptRegistrar()
           .OnDocumentReady(() =>
           {%>
           /* Protect from setter-property hacks; see https://stackru.com/a/3147804/328397  */
           $.ajaxSetup({
    converters: {
        "text cleanedjson": function(data) {
            var jsonString = data.replace("throw 1; <dont be evil> ", "");
            return $.parseJSON(jsonString);
                 } // End function
           } // end conveter
}); // end ajaxsetup
  • Каков наилучший подход к добавлению строки к моим данным JSON через return View(someObject) метод?

В идеале, добавление атрибута к каждому подходящему методу может быть лучшим способом, но я могу справиться с этим с помощью размышления, как только пойму, как изменить результат JSON.

1 ответ

JSON - это просто строка, поэтому вы можете манипулировать ею любым удобным способом, прежде чем ее вернуть. Не уверен, что запрашивает JSON, но если это просто запрос типа AJAX, использующий что-то вроде JQuery Post, вы можете сделать что-то подобное в своем контроллере. Вам не нужно возвращать View в ваших методах действия.

    [HttpPost]
    public string GetSomeJson()
    {
        MyObject mo = new MyObject();
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        string json = serializer.Serialize(mo);
        string unparsableJson = unparsableString + json;
        return unparsableJson;
    }
Другие вопросы по тегам