2009-07-22 9 views
2

私はASP.NET MVC Html.Helpersで遊んでいると私は、例えば言うことに気づい:Html.Helpersを使用してASP.NET MVCフォームで `name`属性を指定できないのはなぜですか?

Html.Textbox("test"); 

"name=test"にname属性をレンダリングしますとidタグが"id=test"

しかし、ときに私は何になりますこの:

<%= Html.TextBox("go", null, new { @name = "test2", @id = "test2", @class = "test2" })%> 

id"id=test2"になりますが、nameはとなります

なぜオーバーライドされないのですか?

nameタグが実際に何を理解しているかはまだ分かりません。私はこれまで使ったこともないと思う。

PS

私はそれがキーワードですが、私はちょうど私はちょうどので、それらのすべてのためにそれを行うため、「名前」と「ID」はおそらく唯一の「クラス」をエスケープするん必要がないことを承知していますそれをすることを忘れたり、何かがキーワードであるかどうかを覚えなければなりません。

答えて

3

name属性は、サーバー側でそのフォーム要素の値にアクセスするときに使用されます。これと同じように:name属性を指定するよう

string val = Request.Name["go"]; 

、うまくそれがHtml.TextBoxメソッドの最初のパラメータはそこにあるものです。

+0

ああ、私の頭の上を飛んだとは信じられません。パラメータ名は「名前」と呼ばれ、ドットを接続できないとは信じられません。 だから私はなぜ彼らはあなたがIDと名前を指定するのが欲しいのですか尋ねる必要がありますね? 私は自分のカスタムhtmlヘルパーを構築していますが、名前を指定するだけでよいのですか? – chobo2

+0

これは、name属性がinput要素に属する属性であるためです。 id attriuteは、ページ上の任意の要素に与えることができる標準的な属性ですが。 –

1

IDはDOMツリー内の一意の識別子であり、名前はフォーム内の識別子であり、一意である必要はなく、フォームを送信した後に名前が使用されます。

1

テキストボックスを作成するときの90%のケースで名前を入力しないようにする「ヘルパー」です。

あなたはは彼らだけのタイプは使用しないに自由である:それはアスカを助ける

2

わからない独自のTextBoxWithCustomNameヘルパー作成し、いっその

<input type="textbox" 
     name="theNameIReallyWant" 
     value="<%= model.theNameOfThePropertyInTheModel %>"> 

かをあなたが使用する必要があります正しいケーシング。 「名前」属性を設定するには:

<%= Html.TextBox("go", null, new { Name = "test2", @id = "test2", @class = "test2" })%> 
関連する問題