【问题标题】:asp.net MVC RuleViolation.ErrorMessage into Html.ValidationMessageasp.net MVC RuleViolation.ErrorMessage 转换为 Html.ValidationMessage
【发布时间】:2009-06-30 11:39:18
【问题描述】:

我想将 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 消息而不是上面的“需要名称”。这可能吗?

解决方案是(来自Alexander Prokofyev)使用带有单个参数的ValidationMessage

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

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

非常感谢。 西蒙

【问题讨论】:

    标签: asp.net-mvc validation


    【解决方案1】:

    您应该使用只有一个参数的 ValidationMessage() 助手,例如

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

    和调用代码

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

    在返回视图之前在控制器中(我想您已经从NerdDinner 源中获取了 RuleViolation 类定义)。

    【讨论】:

    • 非常感谢亚历山大,DOH!对我来说,我应该看到的那一刻
    猜你喜欢
    • 2019-07-03
    • 2023-02-02
    • 2010-10-14
    • 2011-02-06
    • 2011-02-20
    • 2015-05-30
    • 2011-10-02
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多