设置验证消息的初始文本

时间:2011-12-22 00:51:25

标签: asp.net asp.net-mvc asp.net-mvc-3

我目前正在使用ValidationMessageFor查找并显示我的asp.net MVC3表单中的任何错误。为了在客户端级别提供此功能,我还使用了JQuery的不引人注目的验证。

这些方法很棒但是它们似乎缺少一件事 - 当用户在表单字段中时显示初始“提示”的选项,就像在Twitter's sign up form上一样。为了澄清,我希望它与验证消息出现在同一个地方。

任何人都可以告诉我这个功能是否可用,如果没有,我将如何实现它?

1 个答案:

答案 0 :(得分:2)

详细说明我上面的评论

我实现这个的方法是创建一个“HintFor”html扩展

public static MvcHtmlString HintFor<TModel, TValue>(this HtmlHelper<TModel> self, Expression<Func<TModel, TValue>> expression)
{
    dynamic attribute = ModelMetadata.FromLambdaExpression(expression, self.ViewData);
    return MvcHtmlString.Create(attribute.Description);
}

只显示您在该viewmodel属性的Display属性上设置description属性的内容

[Display(Name = "Application Title", Description = "Description goes in here")]
public string Title { get; set; }

然后在我的前端我格式化了每个表单步骤(额外的类是因为我使用单一形式的库来格式化我的表单)

        <div class="question">
            @Html.LabelFor(m => m.Title, new { @class = "label" })
            <div class="formHint">
                @Html.HintFor(m => m.Title)
            </div>
            <div class="response">
                @Html.TextBoxFor(m => m.Title, new { @class = "textInput", autocomplete = "off" })
            </div>
            <div class="sidetip">
                @Html.ValidationMessageFor(m => m.Title, null, new { @class = "invalid" })
            </div>
        </div>

然后使用一点CSS我将“formhint”类设置为在显示错误消息时显示无

.validation-summary-valid, .field-validation-valid
{
    display: none;
}

.input-validation-error + .formHint
{
    display: none !important;
}

希望这有帮助