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