1

当我使用以下 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 wrt隐藏输入是否有一些有趣的行为,或者什么?

4

1 回答 1

4

PageCount您是否在 POST 控制器操作中设置值?如果是这样,请确保您已从 ModelState 中删除旧值:

[HttpPost]
public ActionResult Index(SomeViewModel model)
{
    ModelState.Remove("PageCount");
    model.PageCount = 2;
    return View(model);
}

这样做的原因是 HTML 助手在绑定时使用最初的 POST 值,而不是模型中的值。因此,如果您打算在控制器操作中修改旧值,则应该从 ModelState 中删除旧值。

这不仅限于 HiddenFor 助手。这就是生成输入字段的所有 HTML 助手的工作方式。

于 2012-10-01T19:07:25.933 回答