将bootstrap CSS类属性添加到文本框ASP.Net MVC

时间:2018-05-03 15:22:48

标签: html css asp.net-mvc razor

使用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;
&#13;
&#13;

2 个答案:

答案 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" })