gpt4 book ai didi

javascript - MVC AJAX POST 请求在 Controller 中显示为空

转载 作者:行者123 更新时间:2023-11-29 15:28:40 24 4
gpt4 key购买 nike

我想弄清楚为什么我的 AJAX POST 请求在到达 Controller 端时显示为 null。我尝试了很多变体,但下面是我现在拥有的。

现在我只是想通过类型来解决问题,所以大部分模型都不需要,并且可以为空。

对我来说最奇怪的是,我不仅可以使用 Chrome 的调试工具看到数据是请求信息,而且一个非常相似的方法正在工作(尽管模型中没有列表。此外,它在其他领域的网站,我已经使用该模型进行提交,并且它有效。

此外,它不仅仅是 AJAX,我试过只做一个常规提交,它做同样的事情。

我相信下面是所有有趣的东西。如果还需要其他东西,请告诉我。

聊天更新:

类型 QuestionType 是一个枚举,值 0-2 对其有效。

我尝试过使用 jQuery,包括使用所示的 serialize() 方法 here .这没有任何作用。

我已经确认发送的是什么,这是第一个正常提交的,第二个是使用 jQuery 的。

"QuestionID=-1&Question=Are+you+alive"%"3F&Type=0"


"QuestionID=-1&Question=Are+you+alive%3F&Type=0"

型号

public class QuestionnaireViewModel
{

[Required]
public QuestionType Type { get; set; }

public int QuestionID { get; set; }

[Required]
public string Question { get; set; }

public string RadioOption { get; set; }

public List<string> Options { get; set; }

public List<bool> MC_Answers { get; set; }

public string ShortAnswer { get; set; }
}

HTML

<form action="/Staffing/SaveQuestion" class="form-horizontal" method="post" role="form">
<input data-val="true" data-val-number="The field QuestionID must be a number." data-val-required="The QuestionID field is required." id="QuestionID" name="QuestionID" type="hidden" value="5">
<div class="form-group">
<label for="Question">Question</label>
<input class="form-control editDisplayText" data-val="true" data-val-required="The Question field is required." id="Question" name="Question" type="text" value="">
<span class="field-validation-valid text-danger" data-valmsg-for="Question" data-valmsg-replace="true"></span>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="Type">Type</label>
<div class="col-md-10">
<select class="form-control questionTypeDD" data-val="true" data-val-required="The Type field is required." id="Type" name="Type">
<option selected="selected" value="0">SHORT</option>
<option value="1">RADIO</option>
<option value="2">CHECKBOX</option>
</select>
</div>
<span class="field-validation-valid text-danger" data-valmsg-for="Type" data-valmsg-replace="true"></span>
</div>
<div class="form-group">
<div class="col-md-12">
<input type="submit" value="Save Edits" class="btn btn-default pull-right">
</div>
</div>
</form>

AJAX

function submitQuestion(event) {
event.preventDefault();
var radio, checkbox;

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

if (xmlhttp.responseText.indexOf("Success") >= 0) {
restoreEdit();

var currentJob = document.getElementById('currentJob');
if (currentJob != null && currentJob != undefined) {
clearQuestions();
getJobQuestionsById(currentJob.innerHTML);
addQuestionEventHandlers();
}
else {
alert("Question added successfully");
}
}
else {
alert(xmlhttp.responseText);
}
}
}

var form = event.currentTarget;
var formData = new FormData(form);
xmlhttp.open("POST", form.action, false);
xmlhttp.send(formData);
}

HTTP 请求

curl "http://localhost:49345/Staffing/SaveQuestion" -H "Origin: http://localhost:49345" -H "Accept-Encoding: gzip, deflate" -H "Accept-Language: en-US,en;q=0.8" -H "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36" -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryU4mNITZXngk0WZ8C" -H "Accept: /" -H "Referer: http://localhost:49345/Staffing/Dashboard" -H "Connection: keep-alive" -H "DNT: 1" --data-binary "------WebKitFormBoundaryU4mNITZXngk0WZ8C"^ "Content-Disposition: form-data; name=""QuestionID"""^

"-1"^ "------WebKitFormBoundaryU4mNITZXngk0WZ8C"^ "Content-Disposition: form-data; name=""Question"""^

"Are you alive?"^ "------WebKitFormBoundaryU4mNITZXngk0WZ8C"^ "Content-Disposition: form-data; name=""Type"""^

"0"^ "------WebKitFormBoundaryU4mNITZXngk0WZ8C--"^ "" --compressed

最佳答案

感谢这篇文章,我终于找到了解决方案! Model is null when form submitted

我的 Controller 是这样的:

public ActionResult SaveQuestion(QuestionnaireViewModel question)

这显然是一个问题(即使外壳不同):

public string Question { get; set; }

解决方案是这样的:

public ActionResult SaveQuestion(QuestionnaireViewModel postQuestion)

基本上,被接受对象的名称不能与其中一个属性同名,否则 MVC 显然会崩溃。

关于javascript - MVC AJAX POST 请求在 Controller 中显示为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36813200/

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