C# 使用jQueryAjax和MVC3发布表单的正确方法是什么?
我已经看到了一些方法如何做到这一点。除了一个部分外,我自己喜欢的方法如下:C# 使用jQueryAjax和MVC3发布表单的正确方法是什么?,c#,jquery,asp.net,asp.net-mvc-3,C#,Jquery,Asp.net,Asp.net Mvc 3,我已经看到了一些方法如何做到这一点。除了一个部分外,我自己喜欢的方法如下: 劫持提交表单事件 收集数据并构建一个json对象 var objToSend = { Property : $('#propertyField').val(), Property2 : ... }; 这是我不喜欢的部分,因为像这样收集25个值很乏味 调用$.ajax({})并指定指向某个启用了[HttpPost]的操作的url 在success:ajax查询的一部分中,收集返回的数据(以字符串形式返回)并在适当的地方写
json
对象
var objToSend = { Property : $('#propertyField').val(), Property2 : ... };
这是我不喜欢的部分,因为像这样收集25个值很乏味$.ajax({})
并指定指向某个启用了[HttpPost]
的操作的urljquery
,来自ASP.NET
WebForms背景,所以整个“拥抱web”部分对我来说完全陌生 可以使用该方法避免逐个传递所有字段。它将使用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;
});
另一种可能性是:
有些人发现使用帮助程序渲染表单也很有用:
@using (Ajax.BeginForm(new AjaxOptions { OnSuccess = "success" }))
{
... some input fields
}
在ASP.NET MVC 3中,您需要包括jquery.unobtrusive ajax.js
脚本,该脚本以不受干扰的方式将ajax助手发出的HTML5data-*
属性ajax化。您可以使用该方法避免逐个传递所有字段。它将使用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;
});
另一种可能性是:
有些人发现使用帮助程序渲染表单也很有用:
@using (Ajax.BeginForm(new AjaxOptions { OnSuccess = "success" }))
{
... some input fields
}
在ASP.NET MVC 3中,您需要包含jquery.unobtrusive ajax.js
脚本,该脚本以不显眼的方式ajax化ajax助手发出的HTML5data-*
属性。我就是这样做的
如果您正在处理表单,您还可以选择使用MVC帮助程序为您创建邮政编码处理代码,例如:
<% using (html.BeginForm()) {%>
// html for the form
<input type='submit' value='post' />
<% } %>
//表单的html
从WebForms到MVC的转换可能是一个棘手的问题,因为人们已经知道,你真的在处理web编程的原始方面,即http、html和javascript。。。顺便说一句,我相信这是一件好事,因为我不喜欢WebForms的伪单进程事件模型
MVC万岁!:) 我就是这么做的
如果您正在处理表单,您还可以选择使用MVC帮助程序为您创建邮政编码处理代码,例如:
<% using (html.BeginForm()) {%>
// html for the form
<input type='submit' value='post' />
<% } %>
//表单的html
从WebForms到MVC的转换可能是一个棘手的问题,因为人们已经知道,你真的在处理web编程的原始方面,即http、html和javascript。。。顺便说一句,我相信这是一件好事,因为我不喜欢WebForms的伪单进程事件模型
MVC万岁!:) 允许jQuery为您构建json。您可以序列化表单,该表单将创建供您提交的数据集
$.post("myUrl",
$("form").serialize(),
function(callback) { ... }
);
允许jQuery为您构建json。您可以序列化表单,该表单将创建供您提交的数据集
$.post("myUrl",
$("form").serialize(),
function(callback) { ... }
);
我倾向于使用“jQuery表单插件”。它允许您轻松地将标准表单抽象为AJAX表单:
它还允许您轻松捕获各种事件、故障条件、验证等,并可以根据需要将表单转换为JSON请求或XML。也处理文件上传。我倾向于使用“jQuery表单插件”。它允许您轻松地将标准表单抽象为AJAX表单:
它还允许您轻松捕获各种事件、故障条件、验证等,并可以根据需要将表单转换为JSON请求或XML。也处理文件上载。我将如何在控制器操作中处理.serialize创建的对象?它是否将输入ID、名称和set作为对象中输入字段值的名称?@Phil,与您提交任何标准表单的方式相同:您将定义一个视图模型,其中包含映射到输入字段的属性,并让POST controller操作将此视图模型作为参数。默认模型绑定器将负责正确填充它。我将如何在控制器操作中处理.serialize创建的对象?它是否将输入ID、名称和set作为对象中输入字段值的名称?@Phil,与您提交任何标准表单的方式相同:您将定义一个视图模型,其中包含映射到输入字段的属性,并让POST controller操作将此视图模型作为参数。默认模型绑定器将负责正确填充它。