我想使用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。
非常感谢。 西蒙
答案 0 :(得分:4)
您应该只使用一个参数(如
)来使用ValidationMessage()助手<%= Html.ValidationMessage("Name") %>
并致电代码
foreach (var ruleViolation in GetRuleViolations())
ModelState.AddModelError(ruleViolation.PropertyName,
ruleViolation.ErrorMessage);
在返回视图之前在控制器中(我想你已从NerdDinner源获取了RuleViolation类定义。)