asp.net-mvc – asp.net mvc数据库交互验证
|
在更新或添加到数据库之前,是否有任何关于如何连接需要与数据库交互的验证的链接或建议?我看到的每个示例都显示了如何验证属性,例“是必需的”,“是电子邮件”,“是数字”等,但是如何连接“无法订购缺货商品”的验证? This xVal blog post触及它但没有提供一个例子. 我一直在关注使用存储库的NerdDinner教程,但这是我不太明白的…说我们有一个带有Create方法的OrderController,在创建订单之前我们必须首先检查该项目有货在NerdDinner样式中,Controller使用Repository与数据库进行通信,那么我们的Order对象(Model)如何能够与属性验证一起强制执行此验证,因为它无法与数据库通信? 谢谢你的帮助 解决方法在NerdDinner教程中,您可以签出IsVaild,然后签出GetRuleViolation方法.根据您的业务和数据库规则,您可以使用这些规则检查插入之前的数据.您甚至可以创建一个IsValidForInsert方法来检查您需要强制执行的任何插入特定规则.在NerdDinner中,GetRuleViolation允许您检索违反的规则,并根据您的选择将它们冒泡到界面. public bool IsValid
{
get { return (GetRuleViolations().Count() == 0); }
}
public IEnumerable<RuleViolation> GetRuleViolations()
{
if (CheckDbForViolation)
yield return new RuleViolation("Database Violation","SomeField");
if (String.IsNullOrEmpty(Title))
yield return new RuleViolation("Title is required","Title");
if (String.IsNullOrEmpty(Description))
yield return new RuleViolation("Description is required","Description");
if (String.IsNullOrEmpty(HostedBy))
yield return new RuleViolation("HostedBy is required","HostedBy");
... etc ...
yield break;
}
public bool CheckDbForViolation()
{
/// Do your database work here...
}
您可以进一步将数据库代码拆分到存储库中. CheckDbForViolation将调用repo获取信息,然后确定是否存在违规.事实上,如果您使用的是存储库,我认为这是最好的方法. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 会话变量保存在哪里?
- asp.net – .NET Core项目添加对.NET Framework项目的引用.
- asp.net-mvc-3 – StringLength属性行为
- vsdoc文件是否适用于vbscript?
- asp.net-mvc – 在ASP.NEt MVC 3中传递Html.BeginForm()中D
- asp.net-mvc – 如何最好地使用ASP.NET MVC中的Expires头?
- asp.net-mvc-3 – 从自定义授权属性访问角色
- asp.net-mvc – 如何在DB实体的子模型上使用自定义验证属性
- asp.net-mvc – 具有点的窗体元素的MVC Controller参数?
- 如何在ASP.Net MVC标记中克服我对%%的恐惧?
- asp.net-mvc – 在Azure Active Directory B2C中
- asp.net-web-api – 有没有办法在ASP.Net Web AP
- asp.net-mvc – ASP.NET MVC身份默认实现
- asp.net – 304未修改静态文件
- asp.net – 为什么IFormFile显示为null,我该如何
- asp.net – 在button和asp之间的区别:button on
- asp.net-mvc – 什么是ASP.Net MVC查看引擎?
- asp.net-mvc – 如何从验证摘要中删除列表
- asp.net-mvc – 在ASP.NET MVC 3中路由静态文件,
- .net中的深拷贝与浅拷贝
