在我的asp.net mvc應用程序中,我有服務層,與業務對象一起運行,將其傳遞給存儲庫層並返回給控制器。不,我不能確定我需要驗證對象的位置。第一名 - 與業務組件模型標註的屬性使用數據註釋驗證對象類,例如:什麼是驗證的更好方式/地點?
[AcceptVerbs("POST")]
public ActionResult Edit(Source src)
{
if(!ModelState.IsValid){
return View("EditSource", src);
_sourceService.SaveSource(src);
return RedirectToAction("Index");
}
[MetadataType(typeof(Source.MetaSource))]
public class Source
{
private class MetaSource
{
[Required]
public string Name { set; get; }
[Required]
public string Url { set; get; }
}
public int? ID { set; get; }
public string Name { set; get; }
public string Url { set; get; }
public Source()
{
ID = null;
}
方式二 - 驗證服務層對象,通過傳遞驗證字典服務層,例如:
[AcceptVerbs("POST")]
public ActionResult Edit(Source src)
{
if (!_sourceService.ValidateSource(src)){
return View("EditSource", src);
_sourceService.SaveSource(src);
return RedirectToAction("Index");
}
public bool ValidateSource(Source srcToValidate)
{
if (string.IsNullOrEmpty(srcToValidate.Name))
_validationDictionary.AddError("Name", "Name is required.");
else
if (srcToValidate.Name.Trim().Length == 0)
_validationDictionary.AddError("Name", "Name is required.");
if (string.IsNullOrEmpty(srcToValidate.Url))
_validationDictionary.AddError("Url", "Url is required.");
else
if (srcToValidate.Url.Trim().Length == 0)
_validationDictionary.AddError("Url", "Url is required.");
return _validationDictionary.IsValid;
}
我想創建客戶端驗證,並添加本地化驗證錯誤,也是我需要創建自定義規則,我需要什麼樣的優點和缺點的這種2路,或者可能選擇另一種方式調用數據庫,等等?