我目前正在使用ValidationMessageFor
查找并显示我的asp.net MVC3表单中的任何错误。为了在客户端级别提供此功能,我还使用了JQuery的不引人注目的验证。
这些方法很棒但是它们似乎缺少一件事 - 当用户在表单字段中时显示初始“提示”的选项,就像在Twitter's sign up form上一样。为了澄清,我希望它与验证消息出现在同一个地方。
任何人都可以告诉我这个功能是否可用,如果没有,我将如何实现它?
答案 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;
}
希望这有帮助