gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 23:53:37 25 4
gpt4 key购买 nike

我有三个部分 View ,每个 View 都使用单独的模型进行强类型化。每个 View 都包含它自己的表单并提交给不同的操作。一些模型包含具有相同名称的属性,当我使用 html 帮助器方法创建文本框和标签时,我最终在页面上得到了重复的 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" />
}

部分_业务 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" />
}

普通 View
<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 属性。有什么方法可以告诉模型或 View 为这些字段使用不同的 ID?

最佳答案

MVC 助手没有考虑到您可以在一个 View 中拥有多个模型。所有具有相同名称的属性都将获得重复值(每个模型一个值)。

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

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

关于asp.net-mvc-3 - 在 ASP.NET MVC 中使用多个部分时重复输入 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4902725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com