MVC3 ..是什么让Html.ValidationMessage ...在渲染上显示“*”

时间:2011-12-13 01:18:29

标签: c# asp.net-mvc-3 razor data-annotations

C#,MVC3,Razor

是否有一种简单的方式来显示" *"当Razor视图呈现时 然后应用不同的(更具信息性)消息 实际验证发生了吗?

该视图目前正在使用
@ Html.ValidationMessageFor(model => model.Email)

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

问题:
我错过了我可以在DataAnnotation上添加的内容,以便它也可以"还有#34;在视图上的每个必需TextBox的末尾添加[*]?

===================================
我可以创建一个新的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 /

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

先谢谢。

1 个答案:

答案 0 :(得分:0)

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