Mvc Core:为重复名称生成一次验证属性
Mvc Core: Validation attributes are generated once for dublicated names
这个问题和 一样,但在旧问题中,原因被标记为答案。
我的页面,有一个表单包含了几个项目。每个项目都包含一些元素,因此它们的名称重复。
<form ...>
.....
<table class="details">
<thead>
<tr>
<th>Prop1</th>
<th>Prop2</th>
</tr>
</thead>
<tbody>
@foreach(var item in Model.Items)
{
@await Html.PartialAsync("partial-view-name", detail)
}
</tbody>
</table>
...
</form>
部分
....
<tr>
<td><input asp-for="Prop1" /></td>
<td><input asp-for="Prop2" /></td>
</tr>
如前所述here这是设计的行为,但我想知道是否有任何方法可以覆盖它。
我认为您的问题是如何将每个对象渲染到屏幕上。如果您应用下面的逻辑,它应该会正确呈现,并且还会在提交时正确绑定回列表。
@for (int i=0; i< Model.Items.Count; i++)
{
<div class="text-center">
<label asp-for="@Model.Items[i].Prop1"></label>
<input asp-for="@Model.Items[i].Prop1" />
<label asp-for="@Model.Items[i].Prop2"></label>
<input asp-for="@Model.Items[i].Prop2" />
</div>
}
我找到了向 HTML 字段添加前缀的解决方案,因此名称在迭代中会有所不同。
@{ ViewData.TemplateInfo.HtmlFieldPrefix = Model.ID; }
<tr>
<td><input asp-for="Prop1"/></td>
<td><input asp-for="Prop2"/></td>
</tr>
这个问题和
我的页面,有一个表单包含了几个项目。每个项目都包含一些元素,因此它们的名称重复。
<form ...>
.....
<table class="details">
<thead>
<tr>
<th>Prop1</th>
<th>Prop2</th>
</tr>
</thead>
<tbody>
@foreach(var item in Model.Items)
{
@await Html.PartialAsync("partial-view-name", detail)
}
</tbody>
</table>
...
</form>
部分
....
<tr>
<td><input asp-for="Prop1" /></td>
<td><input asp-for="Prop2" /></td>
</tr>
如前所述here这是设计的行为,但我想知道是否有任何方法可以覆盖它。
我认为您的问题是如何将每个对象渲染到屏幕上。如果您应用下面的逻辑,它应该会正确呈现,并且还会在提交时正确绑定回列表。
@for (int i=0; i< Model.Items.Count; i++)
{
<div class="text-center">
<label asp-for="@Model.Items[i].Prop1"></label>
<input asp-for="@Model.Items[i].Prop1" />
<label asp-for="@Model.Items[i].Prop2"></label>
<input asp-for="@Model.Items[i].Prop2" />
</div>
}
我找到了向 HTML 字段添加前缀的解决方案,因此名称在迭代中会有所不同。
@{ ViewData.TemplateInfo.HtmlFieldPrefix = Model.ID; }
<tr>
<td><input asp-for="Prop1"/></td>
<td><input asp-for="Prop2"/></td>
</tr>