我正在将我的应用程序从MVC3(aspx)迁移到MVC5(razor)。我正在尝试使用以下命令将输入名称从Client.FirstName更改为FirstName:
@(Html.Bootstrap().TextBoxFor(m => m.Client.FirstName).Data(new {@name = "FirstName"})
.Id("FirstName"))
我明白了:
<input name="Client.FirstName" class="form-control" id="FirstName" type="text" value="" data-name="FirstName">
我在MVC3中使用了以下助手:
public static string ExTextBox (this HtmlHelper helper, string name, object value, bool readOnly, string Label)
{
string HTML = "";
//if (readOnly) HTML = String.Format("<label for='{0}'>{1}</label>", name, value);
if (readOnly)
HTML = value != null ? value.ToString() : "";
else
HTML = System.Web.Mvc.Html.InputExtensions.TextBox(helper, name, value).ToString() + System.Web.Mvc.Html.ValidationExtensions.ValidationMessage(helper, name, "*");
HTML = AddCellsAndLabel(HTML, name, Label);
return HTML;
}
在视图中:
<%= Html.ExTextBox("FirstName", Html.Encode(Model.Client.FirstName), Model.IsReadOnly, null)%>
我在Razor View中尝试了以下内容:
@Html.ExTextBox("FirstName", Html.Encode(Model.Client.FirstName), Model.IsReadOnly, null)
我得到以下(显示):
<input id="FirstName" name="FirstName" type="text" value="" /><span class="field-validation-valid" data-valmsg-for="FirstName" data-valmsg-replace="false">*</span>
因为我没有经验弄清楚如何修复助手;我试着使用twitterBootstrapMVC。
感谢您的建议。
答案 0 :(得分:0)
.HtmlAttribute()
将指定的html属性应用于元素。可选择接受IDictionary作为参数。
.Data()
与.HtmlAttributes()
的工作方式类似,但在每个属性前加data-
。在这种情况下,将应用属性data-name="FirstName"
。
而不是.Data()
使用.HtmlAttributes(new { @name= "FirstName" })
。
答案 1 :(得分:0)
使用
new { Name = "FirstName" }
而不是
new { @name = "FirstName" }