是否可以通过javascript公开Viewmodel的值?
我之所以想知道我的viewmodel已经拥有所有必需的数据,并希望将其绑定到jQGrid。我可以看到它我可以采取两种方法(可能有更多的解决方案,我没有看到):
通过ajax获取数据。这是我在测试项目中做过一次并且网格显示的值。如果这种方法,那么我想如果我用ajax获取数据,我将不需要viewmodel?
从viewmodel获取数据。我在javascript中看到你如何设置jQGrid的方式。但是,如何从viewmodel获取数据并将jQGrid设置为{ dataType: 'local', data = X }
,其中X应该是我的viewmodel的JSON?
希望我已经明确了=)
我需要提示进一步调查!
答案 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()
扩展方法封装了此行为。然后,您可以使用
var jsObject = $.parseJSON('<%= Model.ToJSON() %>')
如果您的解决方案中还没有JSON序列化机制,我强烈建议您使用NewtonSoft's JSON.NET。
它允许您通过简单调用JsonConvert.SerializeObject(Model)
将C#对象转换为该对象的JSON字符串表示。