MVC3 .. что заставляет Html.ValidationMessage ... отображать "*" при рендеринге - PullRequest
1 голос
/ 13 декабря 2011

C #, MVC3, Razor

Есть ли простой способ отобразить "*" при визуализации представления Razor, а затем применить другое (более информативное) сообщение, когда происходит фактическая проверка?

Представление в настоящее время использует
@ Html.ValidationMessageFor (model => model.Email)

Более информативная проверка уже есть, но у меня нет "*", показывающего, что определенные поля

ВОПРОС:
Мне не хватает чего-то, что я могу добавить в DataAnnotation, чтобы он "также" добавил это [*] в конце каждого необходимого TextBox в представлении?

=========================================
Я мог бы создать новое расширение HTMLE, например:

    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 голосов
/ 13 декабря 2011

почему бы просто не поставить звездочку в представлении после каждого текстового поля? как в
@Html.EditorFor(Function(model) model.CommentAuthorName) *

...