asp.net MVC RuleViolation.ErrorMessage into Html.ValidationMessage
asp.net-mvc, validation
Solution
You should use ValidationMessage() helpers with only one parameter like
<%= Html.ValidationMessage("Name") %>
and call code
foreach (var ruleViolation in GetRuleViolations())
ModelState.AddModelError(ruleViolation.PropertyName,
ruleViolation.ErrorMessage);
in controller before returning a view (I suppose you have taken RuleViolation class definition from NerdDinner source).
Problem
I want to use the error message returned by a RuleViolation as the validationMessage of the Html.ValidationMessage(modelName, validationMessage). Simple Example: 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; } } ``` adding errors to modelstate ``` foreach (RuleViolation issue in errors) { modelState.AddModelError(issue.PropertyName, issue.ErrorMessage); } ``` asp page /createPerson/ ``` <%=Html.TextBox("Name",Model.Name)%> <%=Html.ValidationMessage("Name", "Name required")%> ``` What I want to do is use the RuleViolation message instead of "Name required" above. Is this possible? solution is (from Alexander Prokofyev ) use ValidationMessage with a single paramter ``` <%=Html.ValidationMessage("Name")%> ``` this is a very simple example, some of my business rules can throw different RuleViolations on an the input depending on the value. Many thanks. Simon