[英]How do I add to modelstate in my library?
在我的數據庫類中,我有一個像這樣的函數:
//Check if the user login exists in the DB if this is a new user.
if ((userModelItem.UserId == 0) || (userModelItem.UserId == null))
{
if (_db.ABUsers.Count(s => s.Loggin1 == user.Loggin1 || s.Loggin1 == user.Loggin2 ||
s.Loggin2 == user.Loggin1 || s.Loggin2 == user.Loggin2) > 0)
{
var exLog = new ExceptionThrowHandler();
exLog.SaveNewException("SaveUserModelItem", "ABUserRepository", "Loggin1 or loggin2 exists in DB");
return null;
是否有可能在這里也嘗試將錯誤添加到模型狀態而不必將modestate作為對象傳遞給函數? IE瀏覽器可以從httpcontext.current或其他獲得狀態嗎?
IE瀏覽器可以從httpcontext.current或其他獲得狀態嗎?
盡管您可以使用類似System.Web.HttpContext之類的東西,但我還是強烈建議您不要使用它 。 使用這樣的環境值將使您的代碼無法通過單元測試進行測試。
最好的選擇是將上下文值傳遞給該類或返回某些內容,以便適當的層訪問HTTP上下文。
在不知道您試圖從何處調用此函數的情況下,很難給出很多建議,因為這會影響您可能會使用的功能。 據我所知,不可能從HttpContext訪問ModelState.Current,盡管更多地了解您的情況可能會幫助您找到其他解決方法。
在不了解更多信息的情況下,我可能會建議在中間層使用一個幫助程序函數,該函數確實接受模型狀態,然后調用您的數據庫函數,測試結果以查看是否需要影響模型狀態,然后返回原始響應。
為什么不從數據訪問層引發異常,將其捕獲在調用控制器中,並在那里更新modelstate? 對我來說,這似乎是一種更加清晰的關注點分離。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.