我已经看到了两种方法。除一部分之外,我喜欢的我自己的方法如下:
劫持表单的提交事件
收集数据并建立一个json对象
var objToSend = { Property : $('#propertyField').val(), Property2 : ... };
这是我不喜欢的部分,因为收集这样的25个值很繁琐
调用
$.ajax({})并指定url以指向某处启用
[HttpPost]的操作
成功:ajax查询的一部分,收集返回的数据(我以字符串形式返回)并在适当的地方将其写出。我也在这里处理错误,检查第一个单词是否为“ Error:”,然后采取适当的措施。
除了收集阶段,我喜欢这种方法。我敢肯定有更好的方法可以做到这一点,但是我本来是出于
jquery WebForms的背景而沉迷于
ASP.NET的,所以整个“拥抱网络”部分对我来说完全是陌生的。
请您参考如下方法:
您可以使用serialize()方法来避免将所有字段一一传递。它将使用application/x-www-form-urlencoded内容类型将整个表单数据发送到服务器,就像它是标准表单提交一样:
$('#myform').submit(function() {
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function(result) {
// TODO: handle the success case
}
});
return false;
});
另一种可能性是 jQuery form plugin:
$('#myform').ajaxForm(function(result) {
// TODO: handle the success case
});
有些人发现使用
Ajax.BeginForm帮助器来呈现表单也很有用:
@using (Ajax.BeginForm(new AjaxOptions { OnSuccess = "success" }))
{
... some input fields
}
在ASP.NET MVC 3中,您需要包含
jquery.unobtrusive-ajax.js脚本,该脚本可以毫不客气地AJAX地化Ajax帮助程序发出的HTML 5
data-*属性。
