Я пытаюсь выяснить, почему мой запрос POST AJAX отображается как null
, когда он попадает на сторону контроллера. Я пробовал много вариантов, но ниже это то, что у меня есть сейчас.Запрос MVC AJAX POST отображается как null в контроллере
Сейчас я только пытаюсь получить вопрос с типом, чтобы пройти, поэтому большая часть модели не нужна и может быть нулевой.
Что для меня очень странно, так это то, что я не только вижу, что данные являются информацией о запросе с помощью инструментов отладки Chrome, но работает очень похожий метод (хотя в модели нет списков. области сайта, я использовал эту модель для представления, и она работает.
Кроме того, это не просто AJAX, я пытался просто делать регулярно представлять, и он делает то же самое.
Ниже я считаю, что это интересно. Дайте мне знать, если что-то еще необходимо.
Обновления из чата:
Тип QuestionType
является перечислением, и значения 0-2 действительны для него.
Я пробовал использовать jQuery, в том числе используя метод serialize(), показанный here. Это ничего не делало.
Я подтвердил, что отправляется, это первый с нормальной подачей, а второй - при использовании jQuery.
"QuestionID = -1 & Вопрос = ли + вы + живой" % "3F & Type = 0"
«QuestionID = -1 & Вопрос = ли + вы + живы% 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 Request
завиток "http://localhost:49345/Staffing/SaveQuestion" -H "Происхождение: 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, как и Gecko) Chrome/49.0.2623.112 Safari/537.36 "-H" Content-Type: multipart/form-data; border = ---- WebKitFormBoundaryU4mNITZXngk0WZ8C "-H" Принять: / "-H" Referer: http://localhost:49345/Staffing/Dashboard "-H" Подключение: keep-alive "-H" DNT: 1 "--data-binary" ---- --WebKitFormBoundaryU4mNITZXngk0WZ8C "^ " Content-Disposition: form-data; Название = "" QuestionID "" "^
"-1"^ "------ WebKitFormBoundaryU4mNITZXngk0WZ8C"^ " Content-Disposition: форм-данных; имя = "" Вопрос "" "^
"Вы живы?"^ "------ WebKitFormBoundaryU4mNITZXngk0WZ8C"^ " Content-Disposition: форм-данных; имя = "" Тип "" "^
"0"^ "------ WebKitFormBoundaryU4mNITZXngk0WZ8C -"^ "" --compressed
, который вызывает функцию submitQuestion. –
Другая страница, чем сама. На той же странице, которая вызывает другую аналогичную страницу. – David
ОК. что такое тело запроса, которое передается из инструментов разработчика. –