我是 ASP.NET MVC 的新手,但我找不到对此的解释。
我的问题是关于当我使用vs.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
属性是 a String
。
以下是使用 设置初始值的尝试@Html.TextBoxFor()
:
@Html.TextBoxFor(x => x.Phone, htmlAttributes: new { id = "txt_phone", value="Initial Value" })
但是,生成的 HTML 不反映该value
属性:
<input id="txt_phone" name="Phone" type="text" value="" />
我的第一个问题是,“为什么生成的 HTML 没有反映我的value
属性中的‘初始值’文本?”
众所周知,设置初始值的“正确方法”@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 和空字符串的属性!。
那么我的第二个问题是,为什么@Html.TextBoxFor()
需要一个大写的 V却仍然生成一个带有空字符串Value
的小写 v ?value
谢谢