.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();
ます。ValidationSummary に
渡すにはどうすればよいですか?IEnumerable<ValidationResult>
グーグルで答えを見つけようとしましたが、見つかったすべての例は、ビジネスオブジェクトではなくモデルでデータ注釈を使用して検証の概要を表示する方法を説明しています。
ありがとう