Skip to main content
 首页 » 编程设计

c#之用jquery ajax和MVC3发布表单的正确方法是什么

2024年01月16日33dyllove98

我已经看到了两种方法。除一部分之外,我喜欢的我自己的方法如下:


劫持表单的提交事件
收集数据并建立一个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-*属性。