我一直在阅读Pro ASP.NET MVC框架,Steven Sanderson,在第11章中讨论了数据验证.
在页390,我们看到将验证逻辑移动到您的模型层一节.在本节中,我们将在第392页中看到一些代码,说明如何实现验证.
代码实现了一个GetRuleViolations()方法,并且该Save()方法使用它来抛出一个RuleException不合适的东西.
但是,在我看来,域层和数据访问层之间没有区别,这里是代码:
public void Save() {
var errors = GetRuleViolations();
if (errors.Count > 0)
throw new RuleException(errors);
// Todo: Now actually save to the database or whatever
}
private NameValueCollection GetRuleViolations() {
// validations...
}
Run Code Online (Sandbox Code Playgroud)
在我正在工作的项目中,我有一个Domain层,尽可能使用持久性,以及数据访问层,通过NHibernate实现数据访问,并实现在Domain层中定义接口的存储库.
如果我按照作者在这里提出的那样实现验证规则,那么在" Save()"方法中,它们会进入我的数据访问层,但至少我认为它们应该驻留在域模型上!
所以,我的问题是:在创建分层应用程序时,使用域层实现域实体并将接口暴露给存储库(持久性无知),数据访问层从域层实现存储库并实现所有数据访问代码,其中验证规则应该存在吗?
我的主要(或至少是第一个)接口将是ASP.NET MVC应用程序,如果这可能会改变任何东西.
谢谢.
我们都知道参数化SQL是处理用户输入和动态SQL时的方法,但是如果您要搜索的输入是数字,则从字符串转换为int(或double,或long,或其他)是有效的?
我想我要问的是,如果单独使用这种技术在SQL注入方面是绝对可靠的吗?
我正在用c#编写桌面应用程序,我需要一些免费的报告系统.
有什么建议?
编辑:
我使用SQLite作为DB.
我想按字典键对字典列表进行排序,我不想区分大写和小写字符.
dict1 = {'name':'peter','phone':'12355'}
dict2 = {'name':'Paul','phone':'545435'}
dict3 = {'name':'klaus','phone':'55345'}
dict4 = {'name':'Krishna','phone':'12345'}
dict5 = {'name':'Ali','phone':'53453'}
dict6 = {'name':'Hans','phone':'765756'}
list_of_dicts = [dict1,dict2,dict3,dict4,dict5,dict6]
key_field = 'name'
list_of_dicts.sort(key=itemgetter(key_field))
# how to combine key=itemgetter(key_field) and key=str.lower?
for list_field in list_of_dicts:
print list_field[key_field]
Run Code Online (Sandbox Code Playgroud)
应该提供
Ali, Hans, klaus, Krishna, Paul, peter
Run Code Online (Sandbox Code Playgroud)
并不是
klaus, peter, Ali, Hans, Krishna, Paul
Run Code Online (Sandbox Code Playgroud) 只是为了澄清:"echo vs print"和"双引号与单引号"这两个问题是完全可以理解的,这是另一回事:
有没有理由为什么人们会更喜欢:
echo '<table>';
foreach($lotsofrows as $row)
{
echo '<tr><td>',$row['id'],'</td></tr>';
}
echo '<table>';
Run Code Online (Sandbox Code Playgroud)
过度:
<table><?php
foreach($lotsofrows as $row)
{ ?>
<tr>
<td><?php echo $row['id']; ?></td>
</tr><?php
} ?>
</table>
Run Code Online (Sandbox Code Playgroud)
会更快地执行/解析吗?更优雅?(等等.)
我倾向于使用第二种选择,但我担心我可能会忽略一些明显/必要的东西.
我正在围绕定制C++库编写一个SWIG包装器,该库定义了自己的C++异常类型.库的异常类型比标准异常更丰富,更具体.(例如,一个类表示解析错误并且具有行号集合.)如何在保留异常类型的同时将这些异常传播回Python?
我只是想知道是否有人知道有什么办法让bassistance treeview插件与jQuery UI的可排序插件一起使用?特别是在能够将元素从它的嵌套ul拖放到父ul或反之亦然方面.另外两个要求是我能够防止掉到指定的元素上(例如:带有class ="no-drop"的元素),以及在drop事件之后引用函数的能力.
如果用这些插件没有真正可行的方法,有没有人碰巧知道另一个插件?
亲切的问候,雷米
我遇到了问题.
假设另一方面,WSDL将始终改变,
例如,在WSDL文件中描述的其他Web服务只有方法,但方法的名称可能总是改变,今天调用methodABC(),明天将更改为methodDEFO()..
假设在JAVA中,无论如何,我可以动态生成Web服务客户端,而无需手动手动执行??? 我的意思是当我的应用程序仍在运行时动态生成客户端..
或者我应该去看什么样的文章,因为我从互联网上做了很多搜索,找不到办法去做..我想我可能需要创建自己的框架来处理它..但是不要不知道从哪里开始.
我想知道如何使用jquery在我的页面上的所有选择标签中选择第一个选项.
试过这个:
$('select option:nth(0)').attr("selected", "selected");
Run Code Online (Sandbox Code Playgroud)
但没有奏效