ASP.NET MVC模型验证错误旁边的字段

时间:2014-12-29 23:33:38

标签: asp.net asp.net-mvc asp.net-mvc-4 validation

我的代码中有一个基于此链接的自我验证模型: ASP.NET MVC: Custom Validation by DataAnnotation

public class TestModel : IValidatableObject
{
    public string Title { get; set; }
    public string Description { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (Title == null)
            yield return new ValidationResult("The title is mandatory.", new [] { "Title" });

        if (Description == null)
            yield return new ValidationResult("The description is mandatory.", new [] { "Description" });
    }
}

所有这些都很有效。但我的问题是:上面的错误消息显示为ValidationSummary错误。是否有任何方法可以在标题字段旁边(在表单视图上)显示标题错误消息,并在描述字段旁边显示描述错误消息,就像在客户端验证中一样?

2 个答案:

答案 0 :(得分:1)

首先确保在每个字段旁边添加了正确的剃刀标记,例如:

@Html.ValidationMesageFor(m => m.Title)

仅当ModelState中存在与同一字段关联的错误时,才会显示错误消息,因此请确保ModelState["Title"]包含错误,否则您将看不到该消息。

答案 1 :(得分:-1)

这一切都是自定义的,至少是CSS,或者你总是可以使用javascript(jquery)。

<强>更新

嗯,我认为,这是相当少的信息,因此,尝试添加更多。基本上,您还可以使用html.helper ValidationMessageFor + span标记。例如:

@Html.EditorFor(x=>x.ModelProperty)<span>@Html.ValidationMessageFor(x=>x.ModelProperty)</span>

在魔法物体验证后,在动作方法中,分析验证结果 只是raugh演示:

var result = myObject.Validate(someContext);  
if (result != result.Success)
{ 
  ModelState.AddModelError("Title"); // if error in Title prop (otherwise "Description") 
  return View (myObject);
}

或者,如果您的模型通过ValidationAttribute验证,您可以通过ModelState.IsValid或ModelState.IsValidField方法查看。