2012-02-20 60 views
1

简版:当返回JSON时,从Controller.View(对象模型)修改ActionResult

System.Web.MVC.Controller.View(object)如何工作?

龙版本:

我需要预先设置我的JSON结果与任意字符串(Unparsable Curft)。

我不确定的是我如何修改ASP.NET MVC“管道”中的ViewResult。我已阅读关于此主题的MSDN docs,但我仍不清楚如何处理此问题。

  • 在这种情况下,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://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 
  • 什么是前面加上一个字符串,我的JSON数据的最佳方式,通过return View(someObject)方法?

理想情况下,为每个相关方法添加一个属性可能是最好的方法,但是我可以通过反射处理这个问题,一旦我了解了如何修改JSON结果。

回答

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; 
    } 
+0

使用字符串很简单...但是我正在使用的应用程序具有'public ActionResult ReturnSomeJSON'方法签名。通过向Controller.View(Object)发送一个[Telerik GridModel ](http://www.telerik.com/help/aspnet-mvc/t_telerik_web_mvc_gridmodel_1.html)类来返回数据, 'IEnumerable'到'ActionResult'中。我很确定'ToString()'在我的情况下没有被调用。在这种情况下,MVC的视图如何将视图(对象)转换为JSON字符串的ActionResult? – LamonteCristo 2012-02-20 19:51:46

+0

不知道我理解你的问题。显示控制器和视图的一些相关代码将有所帮助。 – 2012-02-20 20:10:10

+0

根据您的请求更新 – LamonteCristo 2012-02-20 20:13:45