mvc 3验证注释错误消息不会显示在字段表单旁边

时间:2014-08-10 07:56:33

标签: c# asp.net asp.net-mvc asp.net-mvc-3

我是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");
    }

当我提交表单时,我在项目中得到验证错误异常消息,而不是在我的创建表单上显示错误消息!!任何想法都提前感谢你们。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您忘记在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" });
        }
    }
}