jQuery.POST - 使用Form.Serialize()传递另一个参数 - Asp.net MVC 3

时间:2011-01-24 16:31:55

标签: asp.net-mvc model-view-controller jquery asp.net-mvc-3

当我正在研究Asp.Net MVC应用程序时,在我的应用程序中,我使用jQuery.POST方法提交表单。

e.g。

jQuery.post('/Product/Save', jQuery(document.forms[0]).serialize(), 
       function (data) { alert('Product Added Successfully.); }
);

在上面的代码段中,我想传递另一个参数..让我们说.. ProductID

所以,我的想法是,我想在jQuery(document.forms[0]).serialize()中同时传递ProductID variablejQuery.POST method,因此我可以在Form and ProductID中同时获得controller's action method

请有人告诉我,我会这样做吗?

先谢谢。

3 个答案:

答案 0 :(得分:13)

您可以使用following plugin将表单序列化为JSON对象并添加其他参数:

$.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name]) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};
像这样:

var data = $('form').serializeObject();
data['ProductId'] = '123';
$.post('<%= Url.Action("Save", "Product") %>', data, function (data) { 
    alert('Product Added Successfully.'); 
});

答案 1 :(得分:0)

使用Url.Action方法构建您的主叫网址怎么样?您可以通过这种方式包含所需的其他数据。

<%: Url.Action('Save', 'Product', new { "ProductID", your product id }) %>

这将替换jQuery.post方法调用中的硬编码URL。

答案 2 :(得分:0)

怎么样:

 var url = '<%= Html.BuildUrlFromExpression<MyController>(c => c.Save(":productId")) %>';

您稍后可以使用帖子网址中的实际值替换该网址。

 url.replace(':productId', $productId);