使用jQuery将空值发布到MVC操作
MVC 2
我试图张贴到使用jQuery的MVC动作,但我得到一个异常,说明id
为空。 我是否需要控制器操作上的某种属性来接受像这样的json数据包? 我错过了什么?
[HttpPost]
public ActionResult SearchCategory(int id, string SearchTerm, int PageNumber, int SiteIdFilter)
{
return Json(AssociationsDao.SearchCategory(id, SearchTerm, PageNumber, SiteIdFilter));
}
post('<%= Url.Action("SearchCategory") %>',
JSON.stringify({id: 12, SearchTerm: '', PageNumber: 1, SiteIdFilter: 1}),
function(d) { alert(d); });
function post(targetURL, dataInput, success) {
$.ajax({
url: targetURL,
type: "POST",
contentType: "application/json; charset=utf-8",
data: dataInput,
dataType: "json",
success: success,
async: true
});
}
从Chrome开发者工具中,这是个例外:
参数字典包含'Current.Web'中用于方法'System.Web.Mvc.ActionResult SearchCategory(Int32,System.String,Int32,Int32)'的非空类型'System.Int32'的参数'id'的空项。 .BackOffice.WebUI.Controllers.SiteProductAssociationsController”。 可选参数必须是引用类型,可为空类型,或者声明为可选参数。 参数名称:参数
编辑
以下是来自Chrome的发布数据的屏幕截图; 我看不出有什么问题:
将post
函数修改为:
function post(targetURL, dataInput, success) {
$.ajax({
url: targetURL,
type: "POST",
data: dataInput,
success: success,
async: true
});
}
MVC比asmx web服务更聪明。 实际上,只需传递一个普通的JavaScript对象,而不是坚持使用json字符串。 请参阅此答案以获取更多信息。
当你为jQuery的$ .ajax()函数提供一个javascript对象形式的数据变量时,它实际上会将它转换为一系列键/值对,并以此方式将其发送到服务器。 发送字符串化的json对象时,它不是这种形式,并且mvc / mvc2中的标准模型绑定器不会剪切它。
还要注意async参数是多余的,因为true是默认值,但这不会伤害任何东西。
链接地址: http://www.djcxy.com/p/39221.html上一篇: Null value posting to MVC action with jQuery
下一篇: The parameters dictionary contains a null entry for parameter