Ada*_*kis 2 c# asp.net-mvc asp.net-mvc-2
MVC 2
我正在尝试使用jQuery发布到MVC操作,但我得到一个异常,声明它id是null.我是否需要在控制器操作上使用某种属性来接受像这样的json数据包?我还缺少什么?
[HttpPost]
public ActionResult SearchCategory(int id, string SearchTerm, int PageNumber, int SiteIdFilter)
{
return Json(AssociationsDao.SearchCategory(id, SearchTerm, PageNumber, SiteIdFilter));
}
Run Code Online (Sandbox Code Playgroud)
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
});
}
Run Code Online (Sandbox Code Playgroud)
从Chrome开发人员工具中,这是一个例外:
参数字典包含非可空类型'System.Int32'的参数'id'的空条目,用于'Current.Web中的方法'System.Web.Mvc.ActionResult SearchCategory(Int32,System.String,Int32,Int32)' .BackOffice.WebUI.Controllers.SiteProductAssociationsController".可选参数必须是引用类型,可空类型,或者声明为可选参数.参数名称:参数
编辑
这是来自chrome的帖子数据的屏幕截图; 我看不出有什么问题:

将post功能修改为:
function post(targetURL, dataInput, success) {
$.ajax({
url: targetURL,
type: "POST",
data: dataInput,
success: success,
async: true
});
}
Run Code Online (Sandbox Code Playgroud)
MVC比asmx Web服务更智能.您可以实际上只需传递一个普通的JavaScript对象,而不是坚持使用json字符串.有关更多信息,请参阅此答案.
当你给jQuery的$ .ajax()函数一个javascript对象形式的数据变量时,它实际上将它转换为一系列键/值对,并以这种方式将它发送到服务器.当你发送字符串化的json对象时,它不是那种形式,mvc/mvc2中的标准模型绑定器不会剪切它.
另请注意,async参数是多余的,因为true是默认值,但这不会对任何事情造成伤害.
| 归档时间: |
|
| 查看次数: |
2289 次 |
| 最近记录: |