jQGrid和MVC 3.0 ViewModel

时间:2011-06-17 23:06:12

标签: asp.net-mvc jqgrid

是否可以通过javascript公开Viewmodel的值?

我之所以想知道我的viewmodel已经拥有所有必需的数据,并希望将其绑定到jQGrid。我可以看到它我可以采取两种方法(可能有更多的解决方案,我没有看到):

  1. 通过ajax获取数据。这是我在测试项目中做过一次并且网格显示的值。如果这种方法,那么我想如果我用ajax获取数据,我将不需要viewmodel?

  2. 从viewmodel获取数据。我在javascript中看到你如何设置jQGrid的方式。但是,如何从viewmodel获取数据并将jQGrid设置为{ dataType: 'local', data = X },其中X应该是我的viewmodel的JSON?

  3. 希望我已经明确了=)

    我需要提示进一步调查!

2 个答案:

答案 0 :(得分:1)

您可以使用:

return (model, JsonRequestBehavior.AllowGet);

向网格的get或post请求发送Json格式的响应。您需要注意数据的格式,例如我们将其用作所有jqGrid模型的基类:

public class JqGridInfo<TModel>
{
    public virtual int total { get; set; }

    public virtual int page { get; set; }

    public virtual int records { get; set; }

    public virtual List<TModel> rows { get; set; }
}

这将使JSON响应模仿jqGrid所期望的内容。

答案 1 :(得分:1)

将View Model序列化为JSON字符串。我使用ToJSON()扩展方法封装了此行为。然后,您可以使用

将其作为JavaScript对象加载
 var jsObject = $.parseJSON('<%= Model.ToJSON() %>')

如果您的解决方案中还没有JSON序列化机制,我强烈建议您使用NewtonSoft's JSON.NET

它允许您通过简单调用JsonConvert.SerializeObject(Model)将C#对象转换为该对象的JSON字符串表示。