MVC AJAX POST 请求在控制器中显示为空
MVC AJAX POST request is showing up as null in the Controller
我试图弄清楚为什么我的 AJAX POST 请求在到达控制器端时显示为null
。我已经尝试了很多变化,但以下是我现在所拥有的。
现在我只是想通过一个带有类型的问题,所以大多数模型都不需要,并且可以为空。
对我来说最奇怪的是,我不仅可以使用 Chrome 的调试工具查看数据是请求信息,而且一种非常相似的方法正在工作(尽管该模型中没有列表。此外,它 网站的其他区域,我已经使用该模型进行提交,并且它有效。
另外,这不仅仅是 AJAX,我尝试过只做一个常规提交,它做同样的事情。
下面我相信是所有有趣的东西。如果需要其他东西,请告诉我。
聊天更新:
类型 QuestionType
是一个枚举,值 0-2 对其有效。
我尝试过使用 jQuery,包括使用此处显示的 serialize() 方法。这什么也没做。
我已经确认了正在发送的内容,它是第一个正常提交的,第二个是使用 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>
阿贾克斯
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 "内容类型: 多部分/表单数据;boundary=----WebKitFormBoundaryU4mNITZXngk0WZ8C" -H "Accept: /" -H "Referer: http://localhost:49345/Staffing/Dashboard" -H "Connection: keep-alive" -H "DNT: 1" --data-binary "------WebKitFormBoundaryU4mNITZXngk0WZ8C"^ "内容处置:表格-数据;名称="问题ID""^
"-1"^ "------WebKitFormBoundaryU4mNITZXngk0WZ8C"^ "内容处置:表格-数据;名称="问题""^
"你还活着?"^ "------WebKitFormBoundaryU4mNITZXngk0WZ8C"^ "内容处置:表格-数据;名称="类型""^
"0"^ "------WebKitFormBoundaryU4mNITZXngk0WZ8C--"^ " --压缩
这篇文章,我终于找到了解决方案! 提交表单时模型为空
我的控制器是这样的:
public ActionResult SaveQuestion(QuestionnaireViewModel question)
这显然是一个问题,因为这个(即使使用不同的外壳):
public string Question { get; set; }
解决方案是这样的:
public ActionResult SaveQuestion(QuestionnaireViewModel postQuestion)
基本上,被接受的对象的名称不能与其中一个属性同名,或者显然 MVC 吓坏了。
- 网格中的更新值不会显示在javaspring控制器上
- MVC AJAX POST 请求在控制器中显示为空
- 将数据从MVC控制器传递到Angular视图,而不在最终的html中显示数据值
- 将音量控制器In添加到从隐藏到块显示的切换中
- 在调用AJAX之后显示ng控制器的内容;作为“;作用
- 如何从控制器返回对象列表并使用JQuery(SpringMVC,ajax)显示它们
- 我们可以将控制器中的JSON数据(MM/DD/YYYY格式)与今天的's日期,并在数组中显示筛选列表
- 无法使用.ajax调用显示MVC控制器返回的属性值
- angularjs在一个页面上显示多个控制器
- 显示控制器angular js的模态
- 将 JSON 数据从控制器传递到指令并显示在视图中
- AngularJs 不显示从控制器填充的列表
- 角度不显示$scope数据,ng 重复传入控制器.也没有错误
- 角度输入无线电未显示控制器中所做的更改
- 有没有办法从木偶.js中的显示控制器访问在列表控制器中创建的布局区域
- 如何在 sapui5 XML 视图中显示控制器变量
- 突出显示控制器AngularJS中的活动页面
- 在Rails中,如何在视图中显示控制器操作成功或失败的JSON状态消息
- 显示控制器每次时间视图上的调用功能
- Fullcalendar停止显示控制器MVC 4中的事件