【发布时间】:2013-02-15 05:50:57
【问题描述】:
我正在开发一个 ASP.net MVC 项目,我正在使用 CheckBoxFor 帮助方法在我的模型中为 boolean 提供值,如下所示:
@Html.CheckBoxFor(m => m.ShouldSaveSearch, new { id="ShouldSaveSearch"})
如果复选框被用户选中,那么当控制器接收到模型时,它会完全正常工作。 ShouldSaveSearch 属性将设置为 true。
[HttpGet]
public ActionResult Search(int studentSearchId = -1)
{
return View(new StudentSearchModel(studentSearchId));
}
[HttpPost]
public ActionResult Search(StudentSearchModel m)
{
ViewBag.SearchResults = Hub.Web.Models.Student.StudentSearchModel.Search(m);
Hub.Web.Models.Student.StudentSearchModel.Save(m);
m.ShouldSaveSearch = false;
m.ShouldShareSearch = false;
m.SavedSearchName = "";
m.SavedSearchDescription = "";
return View(m);
}
然后我将ShouldSaveSearch 属性设置为false,然后返回具有最初提交的相同模型的相同视图。
但是,当视图呈现时,此属性的复选框仍处于选中状态。是否有一些我遗漏的东西阻止复选框自行取消选中?
【问题讨论】:
-
看起来您正在重置表单,然后重新显示视图。更好的做法(post-redirect-get 模式)是
RedirectToAction("Search") -
您不需要 id = "ShouldSaveSearch" - 这将由 mvc 本身生成。二、[HttpPost]属性在哪里?
标签: asp.net asp.net-mvc asp.net-mvc-4 checkbox checkboxfor