加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 在ASP.NET MVC中使用多个部分时重复输入id

发布时间:2020-12-16 09:59:33 所属栏目:asp.Net 来源:网络整理
导读:我有三个局部视图,每个视图都使用单独的模型进行强类型化.每个视图都包含它自己的表单并提交给不同的操作.一些模型包含具有相同名称的属性,当我使用html辅助方法创建文本框和标签时,我最终会在页面上出现重复的html id. 部分_Residential View @model MyProj
我有三个局部视图,每个视图都使用单独的模型进行强类型化.每个视图都包含它自己的表单并提交给不同的操作.一些模型包含具有相同名称的属性,当我使用html辅助方法创建文本框和标签时,我最终会在页面上出现重复的html id.

部分_Residential View

@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" />
}

部分_Business View

@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" />
}

普通视图

<h2>Residential Transaction</h2>
@Html.Partial("_Residential")

<h2>Business Transaction</h2>
@Html.Partial("_Business")

我得到的输出如下所示:

<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>

由于ReferenceNumber在两个模型中,我在页面上得到重复的id.我发现我可以将一个额外的htmlAttributes参数传递给TextBoxFor来更改id.

@Html.TextBoxFor(m => m.ReferenceNumber,new { id = "ResidentialReferenceNumber" })
...
@Html.TextBoxFor(m => m.ReferenceNumber,new { id = "BusinessReferenceNumber" })

这会修复输入上的ID,但标签上的“for”属性仍然具有错误的值.我查看了LabelFor()的各种重载,与TextBoxFor不同,没有htmlAttributes属性.有什么方法可以告诉模型或视图为这些字段使用不同的ID?

解决方法

MVC助手没有考虑到视图中可以有多个模型.具有相同名称的所有属性将获得重复值(每个模型一个值).

也就是说,如果ResidentalTransaction和BusinessModel具有Name属性,则您的html表单将具有两个< input type =“text”name =“Name”/>领域.

如果将所有模型添加到同一个视图模型并使用Html.TextBoxFor(m => m.ResidentalTransaction.Id),我不确定它是如何工作的;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读