asp.net MVC RuleViolation.ErrorMessage进入Html.ValidationMessage

时间:2009-06-30 11:39:18

标签: asp.net-mvc validation

我想使用RuleViolation返回的错误消息作为Html.ValidationMessage(modelName,validationMessage)的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消息而不是上面的“Name required”。这可能吗?

解决方案是(来自Alexander Prokofyev)使用ValidationMessage和一个参数

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

这是一个非常简单的示例,我的一些业务规则可以根据值在输入上抛出不同的RuleViolations。

非常感谢。 西蒙

1 个答案:

答案 0 :(得分:4)

您应该只使用一个参数(如

)来使用ValidationMessage()助手
<%= Html.ValidationMessage("Name") %>

并致电代码

foreach (var ruleViolation in GetRuleViolations())
    ModelState.AddModelError(ruleViolation.PropertyName, 
        ruleViolation.ErrorMessage);
在返回视图之前在控制器中

(我想你已从NerdDinner源获取了RuleViolation类定义。)