如何将强类型模型作为数据参数传递给jquery ajaxpost?

有没有一种简单的方法可以将我的强类型视图模型作为数据参数传递给此jquery ajax调用? 我见过的每个例子,我都必须自己构建json,例如{Property:“Value”等}。 是不是有一些甜美的js助手/ codz teh这样做?

$.ajax({ url: '/mycontroller/myaction', type: 'POST', data: <== Here contentType: 'application/json; charset=utf-8', success: function (data.success) { alert(data); }, error: function () { alert("error"); } }); 

你可以编写一个使用JavascriptSerializer的帮助器:

 public static IHtmlString ToJson(this HtmlHelper html, object data) { var serializer = new JavaScriptSerializer(); return new HtmlString(serializer.Serialize(data)); } 

称之为:

 @Html.ToJson(myData) 

我还写了一个帮助器来做这个(你可以只是窃取代码或使用Nuget包):

https://github.com/paultyng/FluentJson.NET

你可以像这样在Razor视图中创建JSON(注意Knockout扩展方法):

  @JsonObject.Create() .AddProperty("name", "value") .AddProperty("childObject", c => { .AddProperty("childProperty", "value2") }) 

这将产生类似于此的JSON:

 {"name":"value","childObject":{"childProperty":"value2"}} 

它使用JSON.NET序列化程序,而不是内置的序列化程序,您可以轻松地将其代码调整为您自己的用途,如果您不想要额外的依赖项,则可以使用内置的代码。