私はaspmvc3プロジェクトを持っています
@Html.TextBoxFor(model => model.Name)
texBoxForレンダリングとして
<input id="Name" name="Name" type="text" value="" />
私のモデルは「UserModel」です:
[DisplayName("Name")]
public string Name{ get; set; }
IDのプレフィックスとしてモデルの名前に追加する方法はありますか?多分いくつかの属性?
テキストボックスが次のようにレンダリングされるようにしたい
<input id="UserName" name="UserName" type="text" value="" />
@Html.TextBoxFor(model => model.attr, new { Name = "txt1" })
「名前」の代わりに「名前」を使用するだけです
モデルで説明されているように入力をレンダリングしたくない場合は、おそらくHtml.TextBoxFor
ヘルパーを使用したくないでしょう。
代わりにHtml.TextBox
を試してください。あなたが探している正確な値をそれに提供することができます:
@Html.TextBox("UserName", Model.Name, new { id = "UserName" })
ヘルパーを忘れて、単純な古いhtmlを使用することもできることを忘れないでください。
<input id="UserName" name="UserName" type="text" value="@Model.Name" />
警告:これらのメソッドとデフォルトのモデルバインダーのいずれかを使用すると、データを送信するときに、この入力の値がモデルに正しくバインドされません。
TextBoxForヘルパーは、最初の引数として渡されるラムダ式を使用して、入力フィールドの名前を計算します。したがって、生成された入力フィールドの名前をUserName
にする場合は、ビューモデルのプロパティの名前を変更するだけです。
[DisplayName("Name")]
public string UserName { get; set; }
私があなたの質問を正しく理解した場合、モデルのプロパティ名の前に文字列を付けられるようにしたいと思います。
したがって、ビュー「アカウント」を表示している場合は、
AccountName
ビュー「テスト」にいる間、あなたは得るでしょう
TestName
その場合は、ここで行うのと同様に、PartialFor拡張メソッドをオーバーライドするのが最善の策だと思います。
この例では、レンダリングされます
Account.Name and Test.Name
DisplayName属性を「Name」から「UserName」に変更する必要があります。
[DisplayName("UserName")]
public string Name{ get; set; }
そうすれば、あなたはあなたが求めているものを手に入れるでしょう。