使用 .NET MVC 和代码优先 EF 来实现请求的功能。业务对象相对复杂,我用它System.ComponentModel.DataAnnotations.IValidatableObject
来验证业务对象。
现在我正在尝试寻找方法,如何使用 MVC ValidationSummary 而不使用数据注释来显示来自业务对象的验证结果。例如(非常简化):
业务对象:
public class MyBusinessObject : BaseEntity, IValidatableObject
{
public virtual IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
return Validate();
}
public IEnumerable<ValidationResult> Validate()
{
List<ValidationResult> results = new List<ValidationResult>();
if (DealType == DealTypes.NotSet)
{
results.Add(new ValidationResult("BO.DealType.NotSet", new[] { "DealType" }));
}
return results.Count > 0 ? results.AsEnumerable() : null;
}
}
现在在我的 MVC 控制器中,我有这样的东西:
public class MyController : Controller
{
[HttpPost]
public ActionResult New(MyModel myModel)
{
MyBusinessObject bo = GetBoFromModel(myModel);
IEnumerable<ValidationResult> result = bo.Validate();
if(result == null)
{
//Save bo, using my services layer
//return RedirectResult to success page
}
return View(myModel);
}
}
看来,我有Html.ValidationSummary();
。
如何传递IEnumerable<ValidationResult>
给 ValidationSummary?
我试图通过谷歌搜索找到答案,但我找到的所有示例都描述了如何使用模型中的数据注释而不是业务对象中的数据注释来显示验证摘要。
谢谢