使用new { @class="form-control"}
将css类属性添加到使用html帮助程序生成的文本框时,该属性将作为值添加,而同一方法可以与textarea
控件一起使用。
@{
ViewBag.Title = "New";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>New</h2>
<div>
<div class="col-md-4">
@using (Html.BeginForm())
{
<div class="form-group">
@Html.Label("Title");
@Html.TextBox("Title", new { @class = "form-control" })
</div>
<div class="form-group">
@Html.Label("Body")
@Html.TextArea("Body", new{ @class="form-control"} )
</div>
}
<div class="form-group">
<input class="btn btn-default" name="edit" value="edit"/>
<input class="btn btn-default" name="save" value="Save" />
</div>
</div>
</div>
&#13;
答案 0 :(得分:2)
尝试改为@Html.TextBox("Title","", new { @class = "form-control" })
您目前使用的超载是
HtmlHelper.TextBox(string name, object value)
答案 1 :(得分:1)
您正在使用Html.TextBox
的重载方法
public static MvcHtmlString TextBox(
this HtmlHelper htmlHelper,
string name,
object value
)
,如果模型状态字典不包含输入值,则第二个参数设置输入的值。因此,您的代码将呈现类似这样的内容
<input id="Title" name="Title" type="text" value="{ class = form-control }">
你应该使用这个带有值和htmlAttriubutes
的重载public static MvcHtmlString TextBox(
this HtmlHelper htmlHelper,
string name,
object value,
IDictionary<string, object> htmlAttributes
)
像这样使用
@Html.TextBox("Title", null, new { @class = "form-control" })
这里需要注意的是,辅助方法将在模型状态字典中查找值并查看状态字典。因此,如果您的操作方法将ViewBag.Title
设置为某个值,则在调用此方法时将null
作为值传递时,该值将用作输入的值。默认的MVC项目模板使用ViewBag.Title
来设置页面标题。所以你可能会在输入中看到这个值。
要解决此问题,您可以显式传递空字符串而不是null
@Html.TextBox("Title", string.Empty, new { @class = "form-control" })