如何添加到库中的modelstate

本文关键字:modelstate 何添加 添加 | 更新日期: 2023-09-27 18:11:32

在我的DB类中,我有一个这样的函数:

        //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;

是否有可能在这里尝试并添加错误到模型状态,而不必将模型状态作为对象传递给函数?IE可以从httpcontext中获得适度的状态。电流还是什么的?

如何添加到库中的modelstate

IE可以从httpcontext中获得适度的状态。电流还是什么的?

虽然你可以使用System.Web.HttpContext之类的东西,但我强烈建议不要使用。使用这样的环境值将使您的代码无法通过单元测试进行测试。

最好的办法是要么将上下文值传递给类,要么返回一些东西,以便适当的层访问HTTP上下文。

在不知道从哪里调用这个函数的情况下很难给出太多建议,因为这会影响到您可能可用的内容。据我所知,从HttpContext访问ModelState是不可能的。现在,虽然更多地了解你的情况可能会帮助你找到另一份工作。

在不知道更多的情况下,我能建议的最好的方法是在中间层提供一个辅助函数,它接受modelstate,然后调用DB函数,测试结果,看看它是否需要影响modelstate,然后返回原始响应。

为什么不从数据访问层抛出一个异常,在调用控制器中捕获它,并在那里更新模型状态呢?对我来说,这似乎是一个更清晰的关注点分离。