MVC和JQuery:检索表单数据的最佳实践

我有一些使用Ajax的JQuery将信息发送回我的控制器进行处理

我是这样做的:

//Define my controls  ... .... .... //Get the values from my controls var param1= $("#pName").val(); .... .... //Define the return URL. Is this how to send info back? var url = '/?ID=' + id + "&param1=" + param1 + "&param2=" + param2 + "&param3=" + param3 + "&param4=" + param4 + "&param5=" + param5; $.ajax({ url: url, success: function(html) { alert("Success!"); }, }); //My c# code, that processes the request public void SaveRowAjax(string param1 ....) { ... } 

这是使用MVC做到这一点的最佳方式吗?
当我构建URL以回发到服务器时,似乎有点乱

尝试使用SerializeArray提交表单项。 它会将所有值都装入JSON对象。

 var link = "/Port/SaveRowAjax"; var formData = $(":input").serializeArray(); $.post(link,formData); 

您可以尝试在jQuery中使用此类语法

 $.post(link, {param1: param1, param2: param2 }); 

对我有用的方法是这样的:

 jQuery.ajax({ url: '@Url.Action("SaveRowAjax", "Port")', type: 'POST', contentType: 'application/json', data: JSON.stringify({ param1: param1, param2: param2, param3: param3 }), success: function (result) { } }); 

有几种方法可以做到这一点。 我更喜欢这里概述的方法:

http://weblogs.asp.net/mikebosch/archive/2008/02/15/asp-net-mvc-submitting-ajax-form-with-jquery.aspx

是的,它基于较旧版本的MVC,但该技术的真正优势在于使用jQuery(它没有改变)。

该技术的一个限制是它不能用于文件上传,但是,有一个jQuery插件用于执行支持文件上传的ajax表单post(我想通过隐藏的iframe)。

编辑:我认为使用此技术的最佳理由是,如果用户禁用了javascript,表单仍然有效。