ASP.NET MVC は初めてですが、これについての説明を見つけることができませんでした。
私の質問は、対value
を使用したときに生成された HTMLの属性の違いに関するものです。@HtmlTextBox()
@HtmlTextBoxFor()
次のように<input>
使用するための初期値を設定できます。@Html.TextBox()
@Html.TextBox("Phone", "Initial Value", htmlAttributes: new { id = "txt_phone" })
生成された HTML は、期待どおりのものです。
<input id="txt_phone" name="Phone" type="text" value="Initial Value" />
value
上記の生成された属性に注意してください。
使い方@HtmlTextBoxFor()
が違います。私の見解では非常に単純なモデルがあることに注意してください。というPhone
プロパティがありString
ます。
を使用して初期値を設定する試みを次に示します@Html.TextBoxFor()
。
@Html.TextBoxFor(x => x.Phone, htmlAttributes: new { id = "txt_phone", value="Initial Value" })
value
ただし、生成された HTML には属性が反映されません。
<input id="txt_phone" name="Phone" type="text" value="" />
value
最初の質問は、「生成された HTML が属性の「初期値」テキストを反映していないのはなぜですか?」というものです。
多くの人が知っているように、初期値を設定する「正しい方法」@HtmlTextBoxFor()
は次のようになります。
@Html.TextBoxFor(x => x.Phone, htmlAttributes: new { id = "txt_phone", Value = "Initial Value" })
しかし、生成された HTML を見てください。
<input Value="Initial Value" id="txt_phone" name="Phone" type="text" value="" />
ご覧のとおり、Value
(大文字の V で)value
属性を生成しますが、小文字の v と空の文字列で属性を生成します!
私の 2 番目の質問は@Html.TextBoxFor()
、大文字の V を必要とするのに、空の文字列を含むValue
小文字の v を生成するのはなぜですか?value
ありがとう