当我使用以下Razor标记尝试将PageCount
值发送到客户端时,输入的值将呈现为0:
@using (Html.BeginForm("Index", "Gallery", FormMethod.Post, new { id = "search-form" }))
{
@Html.HiddenFor(m => m.PageCount)
尽管PageCount
的值为2:
<input data-val="true" data-val-number="The field PageCount must be a number." data-val-required="The PageCount field is required." id="PageCount" name="PageCount" type="hidden" value="0">
当我回到几乎所有普通人的时候。 HTML,像这样:
<input type="hidden" name="PageCount" id="PageCount" value="2">
Razor w.r.t是否有一些有趣的行为。隐藏的输入,还是什么?
答案 0 :(得分:4)
您是否在POST控制器操作中设置PageCount
值?如果是这样,请确保已从ModelState中删除旧值:
[HttpPost]
public ActionResult Index(SomeViewModel model)
{
ModelState.Remove("PageCount");
model.PageCount = 2;
return View(model);
}
原因是HTML帮助程序在绑定时使用最初的POSTed值,而不是模型中的值。因此,如果要在控制器操作中修改它,则应从ModelState中删除旧值。
这不仅限于HiddenFor帮助器。这就是生成输入字段的所有HTML帮助程序的工作方式。