【发布时间】:2018-09-19 12:38:02
【问题描述】:
由于某种原因,.NET Core (2.1.4) MVC 中的 HiddenFor 帮助器没有在隐藏的输入元素上设置值,尽管它所代表的模型属性上存在值。
如果我手动创建隐藏属性并使用 IdFor、NameFor 并手动设置值,它会按预期工作。
// This works and has a value attribute with a value
<input type="hidden" id="@Html.IdFor(x => x.Fields[componentIndex].Value)" name="@Html.NameFor(x => x.Fields[componentIndex].Value)" value="@Model.Fields[componentIndex].Value"/>
// This has a value attribute but it's empty
@Html.HiddenFor(x => x.Fields[componentIndex].Value)
请注意,在这两种情况下,生成的名称和 ID 都是相同的。
如果我使用 HiddenFor 并为 new { @Value=... } 提供它也没有设置的值。
设置值的 HiddenFor 之间的唯一区别(使用相同的代码但不同的组件索引)是它们是在发布时提供的,而这个有问题的是在控制器中设置的。
【问题讨论】:
-
您需要向您展示控制器代码(很可能是
ModelState问题 - 请参阅 TextBoxFor displaying initial value, not the value updated from code) -
与我们分享
.csproj的内容或重现您的问题的项目。我用@Html.HiddenFor(x => x.Id)在Asp.net Core 2.1下做了一个测试,将Microsoft.NETCore.App和Microsoft.AspNetCore.App升级到2.1.4,结果是正确的<input data-val="true" data-val-required="The Id field is required." id="Id" name="Id" type="hidden" value="1">
标签: c# .net razor asp.net-core asp.net-core-mvc