【问题标题】:ValidationMessageFor readonly property, or one ValidationMessageFor two propertiesValidationMessageFor 只读属性,或一个 ValidationMessageFor 两个属性
【发布时间】:2013-07-17 18:44:32
【问题描述】:

我有一个类包含

[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }

public string FullName {
    get {
        return this.FirstName + " " + this.LastName;
    }
}

是否可以有一个Html.ValidationMessageFor FullName,或者当 FirstName 或 LastName 为空时出现一些自定义验证消息?

更新

这就是我想要的。

  1. 你把两个名字都留空:Full name is required.
  2. 您将 FirstName 留空:Full name is required.
  3. 您将姓氏留空:Full name is required.

【问题讨论】:

  • 但从技术上讲,您不会在视图中使用它,我想显示验证消息,如果我错了,请添加更多详细信息。

标签: c# asp.net-mvc forms validation


【解决方案1】:

您可以执行以下操作(希望我没有误解您):

[Required(ErrorMessage="Yo fill this up please"]
public string FirstName { get; set; }

编辑

如果您有更具体的验证要求,您可以通过您的模型实现IValidateObject,例如:

public class Person : IValidatableObject
{
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public string FullName
    {
        get { return string.Format("{0} {1}", FirstName, LastName); }
    }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (string.IsNullOrEmpty(FirstName) || string.IsNullOrEmpty(LastName))
        {
            yield return new ValidationResult("The full name is required.");
        }
    }
}

然后在您的控制器中,您的 ModelState 将指示输入是否无效:

[HttpPost]
public ActionResult Create(Person person)
{
    if (!ModelState.IsValid)
    {
        return View();
    }

    // do your stuff here ...
}

当然,在您看来,您可以通过 ValidationSummary 获取验证消息:

@Html.ValidationSummary(true)

我希望这会有所帮助。

【讨论】:

  • 不,这就是我想要的。 A) 你把两个名字都留空:Full name is required. B) 你把 FirstName 留空:Full name is required. C) 你把 LastName 留空:Full name is required.
  • 是的,看起来确实如此!现在,它会替换所有其他默认的 ValidationResults,还是只是将其添加到列表中?
  • @Andrew 它应该只是添加到列表中。试一试。
  • 我会冒险出去,相信你,因为当前的问题已经成为这个项目的一个争论点。还是很高兴知道,谢谢!
猜你喜欢
  • 2012-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-19
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多