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
Best Answer
You should use ValidationMessage() helpers with only one parameter like
and call code
in controller before returning a view (I suppose you have taken RuleViolation class definition from NerdDinner source).