Я нашел странный сценарий, который предотвращает бул? быть отправленным обратно в контроллер правильно. Это очень специфическая проблема, поэтому следуйте инструкциям по воссозданию.
Приложение должно быть развернуто как виртуальная папка в IIS, чтобы вместо / Home / Test URL был /Virtual/Home/Test.
Домашний контроллер:
[HttpGet]
public ActionResult Test(int? temp, bool? testBool)
{
return View(testBool);
}
/ Home / Тестовый просмотр (Razor cshtml):
@model bool?
@{
ViewBag.Title = "Test";
}
@using (Html.BeginForm("Test", "Home", FormMethod.Get))
{
@Html.CheckBox("testBool", Model ?? false, new { onchange = "this.form.submit();" })
@Html.Label(Model == true ? "True" : "False")
}
На пост обратно бул? не доходит до контроллера из-за int? перед этим в списке параметров. Это можно решить, поставив bool? до инт? в списке параметров, но, очевидно, вам не нужно этого делать. Он также отлично работает, если не в виртуальной папке на IIS. Та же проблема существует, если использовать метод POST тоже, хотя отправка bool, а не bool? работает, но не является необходимым, если не находится в виртуальной папке, поэтому делать это тоже не нужно.
Кто-нибудь еще сталкивался с этим, и есть ли что-то, что объясняет, почему привязка не срабатывает или это просто ошибка в MVC3?
Если это просто ошибка, кто-нибудь знает, каковы надлежащие каналы ASP.Net MVC для отправки отчетов об ошибках?
Обновление:
Я обнаружил, что если в параметрах действия есть какое-либо число переменных, допускающих значение NULL, только первая из них будет работать, а все остальные не будут заполнены. Кто-нибудь знает, если это дизайн или ошибка?