3つの部分ビューが別々のモデルで厳密に型指定されています。各ビューには独自のフォームが含まれ、異なるアクションに送信されます。いくつかのモデルには同じ名前のプロパティが含まれています.HTMLヘルパーメソッドを使用してテキストボックスとラベルを作成すると、ページ上に重複するHTML IDが表示されます。ASP.NET MVCで複数のパーシャルを使用するときに入力IDが重複する
一部_Residentialビュー
@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ビュー
@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を取得しています。私はTextBoxForにidを変更するために余分なhtmlAttributesパラメータを渡すことができるとわかりました。
@Html.TextBoxFor(m => m.ReferenceNumber, new { id = "ResidentialReferenceNumber" })
...
@Html.TextBoxFor(m => m.ReferenceNumber, new { id = "BusinessReferenceNumber" })
これは入力のIDを修正しますが、ラベルの 'for'属性の値はまだ間違っています。 LabelFor()のさまざまなオーバーロードを調べ、TextBoxForとは異なり、htmlAttributesプロパティはありません。これらのフィールドに異なるIDを使用するようモデルやビューに伝えることができる方法はありますか?
うーんを使用している場合、それがどのように動作するかがわからないよ...ので、あなたは答えを見つけたようですね。質問はなんですか? – Cynthia
何が起こったのか分かりませんが、私の最後の段落は途切れました。投稿を更新して追加しました。 – Will
興味深いのは、idを定義することで、同じモデルのリストに対して複数のテキストボックスがあるような、私の同様の問題が実際に解決されたからです。問題は、テキストボックスが同じプロパティであってもモデルの異なるインスタンスであったため、テキストボックスの1つを編集すると同じIDを持つ他のテキストボックスを編集するということでした。とてもありがとう! –