如何在库中添加到modelstate?

时间:2011-10-17 09:42:05

标签: c# .net asp.net-mvc-2

在我的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;

这里是否可以尝试向模型状态添加错误,而不必将modestate作为对象传递给函数? IE可以从httpcontext.current或其他东西中获取modestate吗?

3 个答案:

答案 0 :(得分:0)

  

IE可以从httpcontext.current或其他东西中获取modestate吗?

虽然您可以使用类似System.Web.HttpContext的内容,但我强烈建议推荐。使用这样的环境值会使您的代码无法通过单元测试进行测试。

最好的办法是将上下文值传递给类或返回一些内容,以便相应的层访问HTTP上下文。

答案 1 :(得分:0)

如果不知道你试图调用此函数的位置,很难给出很多建议,因为这会影响你可以使用的内容。据我所知,从HttpContext.Current访问ModelState是不可能的,虽然了解更多关于你的情况可能有助于找到另一种解决方法。

我不知道更多我能建议的最好的是中间层的辅助函数,它确实采用modelstate然后调用你的数据库函数,测试结果以查看它是否需要影响模型状态,然后返回原始响应

答案 2 :(得分:0)

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