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

时间:2012-02-21 15:06:55

标签: asp.net-mvc-3 jquery razor

有没有一种简单的方法可以将我的强类型视图模型作为数据参数传递给此jquery ajax调用?我见过的每个例子,我都必须自己构建json,例如{财产:“价值”等}。是不是有一些甜美的助手/ 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");
        }
    });

1 个答案:

答案 0 :(得分:1)

您可以编写一个使用JavascriptSerializer

的帮助程序
public static IHtmlString ToJson<TModel>(this HtmlHelper<TModel> 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序列化程序,而不是内置的序列化程序,您可以轻松地将其代码调整为您自己的用途,如果您不想要额外的依赖项,则可以使用内置的代码。