在我的MVC服務層我有代碼,如下面的驗證:這是一種編碼MVC服務層的有效方法嗎?
protected bool ValidateAccount(Account account)
{
var accounts = _accountRepository.GetPk(account.PartitionKey);
if (accounts.Any(b => b.Title.Equals(account.Title) &&
!b.RowKey.Equals(account.RowKey)))
_validationDictionary.AddError("", "Duplicate title");
return _validationDictionary.IsValid;
}
然而,在「動作類型」的方法我吸收與代碼例外是這樣的:
public bool Create(Account account)
{
if (!ValidateAccount(account))
return false;
try
{
_accountRepository.AddOrUpdate(account);
}
catch
{
return false;
}
return true;
}
我控制器這樣編碼:
public ActionResult Create(BaseViewModel vm)
{
_accountService = new AccountService(new ModelStateWrapper(this.ModelState), vm.Meta.DataSourceID);
if (ModelState.IsValid)
{
_accountService = new AccountService(new ModelStateWrapper(this.ModelState), vm.Meta.DataSourceID);
if (!_accountService.Create(vm.Account))
return View("CreateEdit", vm);
else
return RedirectToAction("Created");
}
return RedirectToAction("Home");
}
return View("CreateEdit", vm);
}
這是一個合理的方法嗎?我擔心的是我可能會失去服務層中的異常信息。
+1這是一個不錯的主意,可以掩蓋更大的問題。一般的經驗法則是抓住你所能做的,讓剩下的泡沫起來。 – James