繁体   English   中英

MVC 3验证批注错误消息不会显示在字段窗体旁边

[英]mvc 3 validation annotation error messages are not displayed next to the fields form

我是MVC的新手,我拥有的是消息传递类

[Table("employeeTable")]
public class Messsaging : IValidatableObject
{
    public virtual int id { set; get; }
    [Required]
    public virtual String name { set; get; }
    [Required]
    public virtual String country { set; get; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (name.Equals(null))
        {
            yield return new ValidationResult("this field can'not be empty");
        }
    }
}

我有一个创建动作方法

[HttpPost]
    public ActionResult Create(Messsaging form)
    {
        var newmessage = messageContext.messages.Add(form);
        messageContext.SaveChanges();
        return RedirectToAction("Index");
    }

当我提交表单时,我在项目内收到验证错误异常消息,而不是在我的创建表单上显示错误消息! 任何想法都要先谢谢大家。

您需要在保存之前检查ModelState ,如果无效,请返回视图

[HttpPost]
public ActionResult Create(Messsaging form)
{
  if (!ModelState.IsValid)
  {
    return View(form); // returns the view with errors
  }
  // It OK so save
}

您忘记在ValidationResult构造函数中设置字段名称,而使用string.IsNullOrWhiteSpace()来检查name属性的值。

[Table("employeeTable")]
public class Messsaging : IValidatableObject
{
    public virtual int id { set; get; }
    [Required]
    public virtual String name { set; get; }
    [Required]
    public virtual String country { set; get; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (string.IsNullOrWhiteSpace(name))
        {
            yield return new ValidationResult("this field can'not be empty", new[] { "name" });
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM