什么使Html.ValidationMessage . .显示"*"在渲染

本文关键字:quot 显示 什么 Html ValidationMessage | 更新日期: 2023-09-27 18:17:44

c#, MVC3, Razor

是否有一个简单的方法来显示一个"*"当Razor视图渲染,然后应用不同的(更有信息的)消息实际验证发生了吗?

视图当前正在使用
@Html。ValidationMessageFor(model => model. email)

更多的信息验证已经存在,但我没有"*"表示某些字段是必需的。

问题:
我是否错过了一些我可以在DataAnnotation上添加的东西,以便它"也"在视图上每个所需的文本框的末尾添加[*]?

===================================
我可以创建一个新的HTMLExtension,如

    public static partial class ExtensionMethods
    {
        public static MvcHtmlString RequiredSymbolFor<TModel, TProperty>(
            this HtmlHelper<TModel> htmlHelper,
            Expression<Func<TModel, TProperty>> expression,
            string symbol = "*",
            string cssClass = "editor-field-required")
        {
            ModelMetadata modelMetadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
            if (modelMetadata.IsRequired)
            {
                var builder = new TagBuilder("span");
                builder.AddCssClass(cssClass);
                builder.InnerHtml = symbol;
                return new MvcHtmlString(builder.ToString(TagRenderMode.Normal));
            }
            return new MvcHtmlString("");
        }
    }

…然后在视图上添加新的htmlhelper为:

@Html.RequiredSymbolFor(model => model.Firstname)
从[http://www.kristofclaes.be/blog/2011/08/26/an-htmlhelper-to-display-if-a-field-is-required-or-not-in-aspnet-mvc-3/]

但我只是想知道是否有更简单的方法。

什么使Html.ValidationMessage . .显示"*"在渲染

为什么不在视图中每个文本框后面加上星号呢?在
@Html.EditorFor(Function(model) model.CommentAuthorName) *