Asp.net mvc 如何应用引导v4 alpha';使用ASP.NET Razor语法的表单输入验证类?

Asp.net mvc 如何应用引导v4 alpha';使用ASP.NET Razor语法的表单输入验证类?,asp.net-mvc,twitter-bootstrap,razor,Asp.net Mvc,Twitter Bootstrap,Razor,因此,引导V4Alpha稍微改变了表单验证类。现在,要将验证样式应用于表单输入,需要将CSS类应用于父级div.form-group 我正在使用ASP.NETMVC4编写一个网站,并试图找出如何将这个CSS类应用于父HTML元素 例如,这里是我当前用于表单输入元素的HTML <div class="form-group"> @Html.LabelFor(m => m.Password) @Html.PasswordFor(m => m.Password,

因此,引导V4Alpha稍微改变了表单验证类。现在,要将验证样式应用于表单输入,需要将CSS类应用于父级
div.form-group

我正在使用ASP.NETMVC4编写一个网站,并试图找出如何将这个CSS类应用于父HTML元素

例如,这里是我当前用于表单输入元素的HTML

<div class="form-group">
    @Html.LabelFor(m => m.Password)
    @Html.PasswordFor(m => m.Password, new { @class = "form-control" })
    @Html.ValidationMessageFor(m => m.Password)
</div>
但是,我只想在密码字段有验证消息时应用它


你知道如何使用Razor实现这一点吗?

你可以创建一个
HtmlHelper
,它检查
ModelState
并返回一个错误类:

public static class HtmlHelperExtensions
{
    public static string FieldHasError(this HtmlHelper helper, string propertyName, string errorClass = "has-danger")
    {            
        if (helper.ViewData.ModelState != null && !helper.ViewData.ModelState.IsValidField(propertyName))
        {
            return errorClass;
        }
        return string.Empty;
    }

    public static string FieldHasError<TModel, TEnum>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TEnum>> expression, string errorClass = "has-danger")
    {
        var expressionString = ExpressionHelper.GetExpressionText(expression);
        var modelName = helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(expressionString);
        return FieldHasError(helper, modelName, errorClass);
    }
}
公共静态类HtmlHelperExtensions
{
公共静态字符串FieldHasError(此HtmlHelper帮助程序,字符串属性名称,字符串errorClass=“有危险”)
{            
if(helper.ViewData.ModelState!=null&&!helper.ViewData.ModelState.IsValidField(propertyName))
{
返回错误类;
}
返回字符串。空;
}
公共静态字符串FieldHasError(此HtmlHelper帮助程序,表达式,字符串errorClass=“has danger”)
{
var expressionString=ExpressionHelper.GetExpressionText(表达式);
var modelName=helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(expressionString);
返回FieldHasError(helper、modelName、errorClass);
}
}
简单用法:

<div class="form-group @Html.FieldHasError("Password")">
    @Html.LabelFor(m => m.Password)
    @Html.PasswordFor(m => m.Password, new { @class = "form-control" })
    @Html.ValidationMessageFor(m => m.Password)
</div>

@LabelFor(m=>m.Password)
@Html.PasswordFor(m=>m.Password,新的{@class=“form control”})
@Html.ValidationMessageFor(m=>m.Password)


@LabelFor(m=>m.Password)
@Html.PasswordFor(m=>m.Password,新的{@class=“form control”})
@Html.ValidationMessageFor(m=>m.Password)

非常酷的想法!我从来没有想过要做这种事。谢谢
<div class="form-group @Html.FieldHasError("Password")">
    @Html.LabelFor(m => m.Password)
    @Html.PasswordFor(m => m.Password, new { @class = "form-control" })
    @Html.ValidationMessageFor(m => m.Password)
</div>
<div class="form-group @Html.FieldHasError(m => m.Password)">
    @Html.LabelFor(m => m.Password)
    @Html.PasswordFor(m => m.Password, new { @class = "form-control" })
    @Html.ValidationMessageFor(m => m.Password)
</div>