在我的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吗?
答案 0 :(得分:0)
IE可以从httpcontext.current或其他东西中获取modestate吗?
虽然您可以使用类似System.Web.HttpContext的内容,但我强烈建议推荐。使用这样的环境值会使您的代码无法通过单元测试进行测试。
最好的办法是将上下文值传递给类或返回一些内容,以便相应的层访问HTTP上下文。
答案 1 :(得分:0)
如果不知道你试图调用此函数的位置,很难给出很多建议,因为这会影响你可以使用的内容。据我所知,从HttpContext.Current访问ModelState是不可能的,虽然了解更多关于你的情况可能有助于找到另一种解决方法。
我不知道更多我能建议的最好的是中间层的辅助函数,它确实采用modelstate然后调用你的数据库函数,测试结果以查看它是否需要影响模型状态,然后返回原始响应
答案 2 :(得分:0)
为什么不从数据访问层抛出异常,在调用控制器中捕获它,并在那里更新模型状态?这对我来说似乎更清晰。