neo*_*aze 0 .net c# razor asp.net-core-mvc asp.net-core
由于某种原因,.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)
Run Code Online (Sandbox Code Playgroud)
请注意,在这两种情况下,生成的名称和 ID 是相同的。
如果我使用 HiddenFor 并提供 anew { @Value=... }值,它也不会设置。
设置值的 HiddenFor 之间的唯一区别(使用相同的代码但不同的组件索引)是它们是在发布时提供的,而这个有问题的值是在控制器中设置的。
ASP.NET Core您可以使用标签助手 ,这样asp-for隐藏的内容将如下所示:
<input asp-for="ModelPropertyName" type="hidden" />
Run Code Online (Sandbox Code Playgroud)
但是,对于将列表绑定到POST控制器操作,有时显式渲染隐藏会更容易(就像您所做的那样),因为隐藏输入名称应遵循集合绑定命名格式,例如Fields[i].Value,其中i是集合索引。
有关集合绑定的更多详细信息,请查看ASP.NET Core 中的模型绑定
| 归档时间: |
|
| 查看次数: |
2084 次 |
| 最近记录: |