簡體   English   中英

如何在庫中添加到modelstate?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM