我的代码中有一个基于此链接的自我验证模型: 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错误。是否有任何方法可以在标题字段旁边(在表单视图上)显示标题错误消息,并在描述字段旁边显示描述错误消息,就像在客户端验证中一样?
答案 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方法查看。