asp.net-mvc - $.ajax 发布到 MVC Controller 返回内部服务器错误 : Parameters dictionary contains null entry

标签 asp.net-mvc jquery

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

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
  });
};

数据对象的构建如下:

var message={"appId":application.val()};

我还尝试了 jsonified 字符串:

var message="{'appId':"+application.val()+"}";

var message="{'appId':'"+application.val()+"'}";

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

Controller 上的方法签名是:

public ContentResult CheckForInstaller(int appId)

当我从方法签名中删除参数时,它确实遇到了内部断点,因此我认为要么是签名需要某种属性,要么是消息没有正确构建。

最佳答案

删除这个:

contentType: 'application/json; charset=utf-8',

MVC 不会将 JSON 解析为 int。您需要默认值 application/x-www-form-urlencoded

关于asp.net-mvc - $.ajax 发布到 MVC Controller 返回内部服务器错误 : Parameters dictionary contains null entry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2281808/

相关文章:

javascript - 在 ASP.NET MVC 中将值从下拉列表传递到数据库

javascript - 捕获按键文档并开始在搜索框中输入

javascript - 使用 JavaScript 隐藏复选框时取消选中该复选框

c# - ModelState.Errors 由空字符串组成

c# - Automapper ResolveUsing 原因 "Can' t 将此解析为可查询表达式”

asp.net-mvc - 如果 kendo ui grid 创建操作的参数名为 "model",则模型绑定(bind)到操作始终为 null

javascript - 使用不断变化的内容动画化 div 的高度?

c# - 即使在使用 Identity ASP.NET MVC 框架关闭浏览器后,如何让用户保持登录状态?

css - 如何在 MVC 上使用 Ajax Helper 创建切换按钮

javascript - jqGrid 问题分组 - 每次更改排序时都会附加重复的行