gpt4 book ai didi

ajax - JQuery Ajax 和将多个复杂对象发布到 asp.net MVC Controller

转载 作者:行者123 更新时间:2023-12-04 19:12:25 24 4
gpt4 key购买 nike

`您好,

将多个参数发布到 mc Controller 方法时出现问题。

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}

Controller 引发以下异常:
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 类型的参数来序列化并传递给我的 Controller 。有任何想法吗?

最佳答案

看起来您在 jquery ajax 调用中缺少内容类型参数。
您应该将其显式设置为 json,如这段代码所示:

function performPostData(postDataOptions,closeWindow) {
$.ajax({ type: postDataOptions.httpVerb,
url: postDataOptions.url,
datatype: "json",
contentType: "application/json; charset=utf-8",

...rest of your code

否则,它将获得其默认值(请参阅 http://api.jquery.com/jQuery.ajax/ ):

application/x-www-form-urlencoded; charset=UTF-8

关于ajax - JQuery Ajax 和将多个复杂对象发布到 asp.net MVC Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13597361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com