简短版本:
System.Web.MVC.Controller.View(object)如何工作?
长版:
我需要在任意字符串(Unparsable Curft)前面添加我的JSON结果。
我不确定的是如何修改ASP.NET MVC“管道”中的ViewResult。我已经阅读了关于这个主题的MSDN docs,但我仍然不清楚如何处理这个问题。
控制器示例
[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://stackoverflow.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
return View(someObject)
方法将字符串添加到我的JSON数据的最佳方法是什么?理想情况下,为每个相关方法添加属性可能是最好的方法,但是一旦我理解了如何修改JSON结果,我就可以通过反射来处理它。
答案 0 :(得分:0)
JSON只是一个字符串,因此您可以在返回之前以任何方式操作它。不确定是什么请求JSON,但如果它只是一个使用类似JQuery Post的AJAX类型请求,你可以在你的控制器中做这样的事情。您不必在操作方法中返回视图。
[HttpPost]
public string GetSomeJson()
{
MyObject mo = new MyObject();
JavaScriptSerializer serializer = new JavaScriptSerializer();
string json = serializer.Serialize(mo);
string unparsableJson = unparsableString + json;
return unparsableJson;
}