Похожие вопросы задавали пару раз, но я не могу найти ответ.Состояние флажка всегда передается контроллеру как null
Я POST
Выполняю некоторые значения для действия контроллера, и все параметры успешно передаются исходя из их имен, за исключением значения bool моего флажка. Он всегда передается как null
.
Форма:
@using (Ajax.BeginForm("AddNote", "Home", FormMethod.Post, new AjaxOptions { OnSuccess = "function noteAdded();", OnFailure = "alert(xhr.responseText)" }))
{
<!-- New Note Modal -->
<div class="modal fade" id="note-add-modal" tabindex="-1" role="dialog" aria-labelledby="note-add-modal">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="note-add-modal-Label">Add A Note</h4>
</div>
<div class="modal-body">
<textarea placeholder="Description..." class="form-control" rows="5" id="comment" name="comment"></textarea>
<textarea name="assignTo" id="assign-to" rows="1" class="form-control" placeholder="Assign To..." data-autocomplete-url="@Url.Action("AutoCompleteUsername")"></textarea>
<br/>
<label id="follow-up-date">Follow-Up Date: <input name="alertDate" class="form-control-date" placeholder="dd/mm/yyyy" id="datepicker" type="text" /></label>
<label class="complete-label">Complete:</label>
<input type="checkbox" id="complete" name="complete" checked="checked"/>
<label for="complete"></label>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="submit" id="note-form-submit" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
}
Флажок имеет название: complete
.
Действие контроллера:
[HttpPost]
public void AddNote(string comment, DateTime? alertDate, bool complete, string assignedTo)
{
// Unrelated Code
}
Я думал, что вы были в состоянии передать состояние флажка к контроллеру в качестве значения BOOL через имя. Или абсолютно необходимо использовать @Html.Checkbox
?
Я прокомментирую это, потому что я не знаю, если это хороший ответ, но однажды это случилось со мной, казалось, что отправитель Ajax не установлен как классический, поэтому по какой-то причине он не понимает, как сопоставить флажок, я установил значение с помощью JavaScript и использовал запрос JQuery Ajax вместо предоставленного Microsoft. Это просто обходной путь, потому что я не знаю, почему это происходит, попробуйте создать этот флажок с помощью CheckBoxFor(); Вы также можете попытаться получить значение checkbox как строку на вашем контроллере. Надеюсь, это сработает для вас. – darkndream
Спасибо за ваш вклад, и да, я думал просто переключиться на jQuery ajax – cfly24
Хорошо работает с jQuery ajax ... отвлекает Microsoft ajax для хорошего – cfly24