web-dev-qa-db-ja.com

Html.TextBoxForを使用する場合は、モデルの名前をプレフィックスとしてidに追加します

私は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="" />
12
Kobi
@Html.TextBoxFor(model => model.attr, new { Name = "txt1" })

「名前」の代わりに「名前」を使用するだけです

11
u_1958148

モデルで説明されているように入力をレンダリングしたくない場合は、おそらくHtml.TextBoxForヘルパーを使用したくないでしょう。

代わりにHtml.TextBoxを試してください。あなたが探している正確な値をそれに提供することができます:

@Html.TextBox("UserName", Model.Name, new { id = "UserName" })

ヘルパーを忘れて、単純な古いhtmlを使用することもできることを忘れないでください。

<input id="UserName" name="UserName" type="text" value="@Model.Name" />

警告:これらのメソッドとデフォルトのモデルバインダーのいずれかを使用すると、データを送信するときに、この入力の値がモデルに正しくバインドされません。

4
enoshixi

TextBoxForヘルパーは、最初の引数として渡されるラムダ式を使用して、入力フィールドの名前を計算します。したがって、生成された入力フィールドの名前をUserNameにする場合は、ビューモデルのプロパティの名前を変更するだけです。

[DisplayName("Name")]
public string UserName { get; set; }
2
Darin Dimitrov

私があなたの質問を正しく理解した場合、モデルのプロパティ名の前に文字列を付けられるようにしたいと思います。

したがって、ビュー「アカウント」を表示している場合は、

AccountName

ビュー「テスト」にいる間、あなたは得るでしょう

TestName

その場合は、ここで行うのと同様に、PartialFor拡張メソッドをオーバーライドするのが最善の策だと思います。

ASP.NET MVC部分ビュー:入力名プレフィックス

この例では、レンダリングされます

Account.Name and Test.Name
0
Kevin Farrugia

DisplayName属性を「Name」から「UserName」に変更する必要があります。

[DisplayName("UserName")]
public string Name{ get; set; }

そうすれば、あなたはあなたが求めているものを手に入れるでしょう。

0
enorl76