asp.net MVC RuleViolation.ErrorMessage в Html.ValidationMessage - PullRequest
4 голосов
/ 30 июня 2009

Я хочу использовать сообщение об ошибке, возвращаемое RuleViolation, в качестве validationMessage из Html.ValidationMessage (modelName, validationMessage).

Простой пример: Person.cs

public partial class Person
    {
        public bool IsValid
        {
            get { return (GetRuleViolations().Count() == 0); }
        }

        public IEnumerable<RuleViolation> GetRuleViolations()
        {
            if (String.IsNullOrEmpty(Name))
                yield return new RuleViolation("Name required", "Name");

            yield break;
        }
}

добавление ошибок в состояние модели

 foreach (RuleViolation issue in errors)
            {
                modelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
            }

страница asp / CreatePerson /

<%=Html.TextBox("Name",Model.Name)%>
<%=Html.ValidationMessage("Name", "Name required")%>

Я хочу использовать сообщение RuleViolation вместо «Требуется имя» выше. Это возможно?

решение (из Александр Прокофьев ) использует ValidationMessage с одним параметром

<%=Html.ValidationMessage("Name")%>

это очень простой пример, некоторые из моих бизнес-правил могут выдавать разные RuleViolations на входе в зависимости от значения.

Большое спасибо. Simon

1 Ответ

4 голосов
/ 30 июня 2009

Вы должны использовать помощники ValidationMessage () только с одним параметром, таким как

<%= Html.ValidationMessage("Name") %>

и код звонка

foreach (var ruleViolation in GetRuleViolations())
    ModelState.AddModelError(ruleViolation.PropertyName, 
        ruleViolation.ErrorMessage);

в контроллере перед возвратом представления (я полагаю, вы взяли определение класса RuleViolation из NerdDinner source).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...