Asp.net mvc 为什么隐藏的输入会丢失我的视图模型';谁的财产价值?
当我使用以下Razor标记尝试将我的Asp.net mvc 为什么隐藏的输入会丢失我的视图模型';谁的财产价值?,asp.net-mvc,razor,Asp.net Mvc,Razor,当我使用以下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 fi
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.隐藏输入是否存在一些有趣的行为,或者是什么?您是否在POST controller操作中设置了
PageCount
值?如果是,请确保已从ModelState中删除旧值:
[HttpPost]
public ActionResult Index(SomeViewModel model)
{
ModelState.Remove("PageCount");
model.PageCount = 2;
return View(model);
}
这是因为HTML帮助程序在绑定时使用最初发布的值,而不是来自模型的值。因此,如果要在控制器操作中修改旧值,则应将其从ModelState中删除
这不仅仅局限于HiddenFor helper。这是所有生成输入字段的HTML帮助程序的工作方式。是否在POST controller操作中设置
PageCount
值?如果是,请确保已从ModelState中删除旧值:
[HttpPost]
public ActionResult Index(SomeViewModel model)
{
ModelState.Remove("PageCount");
model.PageCount = 2;
return View(model);
}
这是因为HTML帮助程序在绑定时使用最初发布的值,而不是来自模型的值。因此,如果要在控制器操作中修改旧值,则应将其从ModelState中删除
这不仅仅局限于HiddenFor helper。这是所有生成输入字段的HTML帮助程序的工作方式。请发布用于填充视图模型中数据的get操作方法代码。另外,您用来生成
的代码是什么?@Gromer,我手工编写了代码,因为生成的代码似乎已损坏。请发布您的get-action方法代码,用于填充视图模型中的数据。另外,您用来生成
的代码是什么?@Gromer,我手工编写了代码,因为生成的代码似乎已损坏。是的,我正在POST中设置它!这是一个搜索操作,除了GET中的一个小垫片外,所有内容都设置在POST中。我以前从未遇到过这个警告。谢谢是的,我正在把它设置在POST中!这是一个搜索操作,除了GET中的一个小垫片外,所有内容都设置在POST中。我以前从未遇到过这个警告。谢谢