`问候,
将多个参数发布到mc控制器方法时出现问题.
controller... [HttpPost] public ActionResult SaveSomething(SomeDomainObject domainObject,bool anOption) { } Ajax Code... function performPostData(postDataOptions,closeWindow) { $.ajax({ type: postDataOptions.httpVerb,url: postDataOptions.url,datatype: "json",traditional: true,data: postDataOptions.data(),success: function () { if (closeWindow) { var window = $('#window').data("kendoWindow"); window.close(); } },error: function (xhr,status,error) { var msg = JSON.parse(xhr.responseText); var validator = $("#editBase").kendoValidator().data("kendoValidator"),status = $(".editValidationStatus"); var err = msg.Message; status.text(err).addClass("invalid"); } }); } JScript function to format data... function GetPostData() { var _domainObject={ prop1: 1,prop2: 2,prop3: 3 }; return JSON.stringify({ domainObject:_domainObject,anOption: true}); }
我在网络捕获中看到这是请求体:
{"domainObject":{"prop1":1,"prop2":2,"Prop3":3},"anOption":true}
控制器引发以下异常:
The parameters dictionary contains a null entry for parameter 'anOption' of non-nullable type 'System.Boolean' for method 'System.Web.Mvc.ActionResult SaveSomething(Domain.Data.SomeDomainObject,Boolean)' in 'Reports.Controllers.TestController'. An optional parameter must be a reference type,a nullable type,or be declared as an optional parameter. Parameter name: parameters
我一直在旋转我的车轮几个小时试图得到一个简单的域对象和bool类型的另一个参数被序列化并传递给我的控制器.有任何想法吗?
解决方法
看起来你缺少jquery ajax调用中的内容类型参数.
你应该明确地将它设置为json,就像在这段代码中一样:
你应该明确地将它设置为json,就像在这段代码中一样:
function performPostData(postDataOptions,closeWindow) { $.ajax({ type: postDataOptions.httpVerb,contentType: "application/json; charset=utf-8",...rest of your code
否则它将获得其默认值(见http://api.jquery.com/jQuery.ajax/):
application/x-www-form-urlencoded; charset=UTF-8
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。