$ .ajax发布到MVC控制器返回内部服务器错误:参数字典包含空条目

Mas*_*low 5 asp.net-mvc jquery

参数字典包含非可空类型'System.Int32'的参数'appId'的空条目,用于'HLIT_TicketingMVC.Controllers.TicketController'中的方法'System.Web.Mvc.ContentResult CheckForInstaller(Int32)'.可选参数必须是引用类型,可空类型,或者声明为可选参数.

function SubmitAjax(url, message, successFunc, errorFunc) {
  $.ajax({
    type:'POST',
    url:url,
    data:message,
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success:successFunc,
    error:errorFunc
  });
};
Run Code Online (Sandbox Code Playgroud)

数据对象构建如下:

var message={"appId":application.val()};
Run Code Online (Sandbox Code Playgroud)

我也尝试了一个jsonified字符串:

var message="{'appId':"+application.val()+"}";
Run Code Online (Sandbox Code Playgroud)

var message="{'appId':'"+application.val()+"'}";
Run Code Online (Sandbox Code Playgroud)

我在尝试发布之前验证了消息是否带有正确的int值.鼠标在调试器上最近显示:{appId="6"}

控制器上的方法签名是:

public ContentResult CheckForInstaller(int appId)
Run Code Online (Sandbox Code Playgroud)

当我从方法签名中删除参数时,它确实触及了内部的断点,所以它是需要某种属性的签名,或者我认为消息没有正确构建.

Cra*_*ntz 9

删除这个:

contentType: 'application/json; charset=utf-8',
Run Code Online (Sandbox Code Playgroud)

MVC不打算将JSON解析为int.您想要默认值application/x-www-form-urlencoded.