我有三个局部视图,每个局部视图都用单独的模型强类型化。每个视图都包含其自己的表单并提交不同的操作。一些模型包含具有相同名称的属性,当我使用html helper方法创建文本框和标签时,我最终在页面上出现重复的html id。
部分_住宅视图
@model MyProject.Models.ResidentialModel
@using (Html.BeginForm("Residential", "Transaction"))
{
@Html.LabelFor(m => m.PersonName)
@Html.TextBoxFor(m => m.PersonName)
@Html.LabelFor(m => m.ReferenceNumber)
@Html.LabelForm(m => m.ReferenceNumber)
<input type="submit" value="Submit" />
}
Run Code Online (Sandbox Code Playgroud)
部分_业务视图
@model MyProject.Models.BusinessModel
@using (Html.BeginForm("Business", "Transaction"))
{
@Html.LabelFor(m => m.BusinessName)
@Html.TextBoxFor(m => m.BusinessName)
@Html.LabelFor(m => m.ReferenceNumber)
@Html.LabelForm(m => m.ReferenceNumber)
<input type="submit" value="Submit" />
}
Run Code Online (Sandbox Code Playgroud)
普通视图
<h2>Residential Transaction</h2>
@Html.Partial("_Residential")
<h2>Business Transaction</h2>
@Html.Partial("_Business")
Run Code Online (Sandbox Code Playgroud)
我得到的输出如下所示:
<h2>Residential Transaction</h2>
<form action="/Transaction/Residential" method="post">
<label for="PersonName">Person Name:</label>
<input type="text id="PersonName" name="PersonName" />
<label for="ReferenceNumber">Reference Number:</label>
<input type="text" id="ReferenceNumber" name="ReferenceNumber" />
<input type="submit" value="Submit" />
</form>
<h2>Business Transaction</h2>
<form action="/Transaction/Business" method="post">
<label for="BusinessName">Business Name:</label>
<input type="text" id="BusinessName" name="BusinessName" />
<label for="ReferenceNumber">Reference Number:</label>
<input type="text" id="ReferenceNumber" name="ReferenceNumber" />
<input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
由于ReferenceNumber在两个模型中都存在,所以我在页面上得到了重复的ID。我发现我可以将一个额外的htmlAttributes参数传递给TextBoxFor来更改ID。
@Html.TextBoxFor(m => m.ReferenceNumber, new { id = "ResidentialReferenceNumber" })
...
@Html.TextBoxFor(m => m.ReferenceNumber, new { id = "BusinessReferenceNumber" })
Run Code Online (Sandbox Code Playgroud)
这样可以固定输入中的ID,但标签上的'for'属性仍然具有错误的值。我遍历了LabelFor()的各种重载,并且与TextBoxFor不同,它没有htmlAttributes属性。有什么方法可以告诉模型或视图为这些字段使用不同的ID?
MVC帮助程序不考虑您可以在视图中拥有多个模型。具有相同名称的所有属性将获得重复值(每个模型一个值)。
也就是说,如果ResidentalTransaction和BusinessModel具有Name属性,则您的html表单将具有两个<input type="text" name="Name" />字段。
我不确定如果将所有模型添加到同一视图模型并使用 Html.TextBoxFor(m => m.ResidentalTransaction.Id);
| 归档时间: |
|
| 查看次数: |
3052 次 |
| 最近记录: |