MonoRail和Linq To SQL的兼容性问题

it2022-06-22  88

今天无意中发现的一个兼容性问题。如果你使用了Monorail+Linq进行开发,这个问题很值得注意。 我在项目中使用Linq内置的OnXXXChanged/OnXXXChanging进行数据有效性验证,比如

partial   void  OnTopicChanging( string  value)       {            if (!value.IsLengthIn(1100))                throw new DataException("主题不符合要求,请返回重新填写");        } 然后在前台用 SmartDispatcherController进行数据绑定,比如 public   void  Post([DataBind( " article " )]ArticleInfo articleInfo) {} 然后我在Globle.ascx.cs中进行未处理异常的捕获 但奇怪的是,当OnTopicChanging中的异常发出后,Globle.ascx.cs竟然无法捕获。也就是说,如果你直接像我这样绑定数据并处理异常的话,是无法得到想要的结果的。 其实原因很简单, SmartDispatcherController在数据绑定的时候用了一个try catch,然后把绑定过程中发生的所有错误全部截获,并放到了 BoundInstanceErrors中去了。 解决方法有两个:1.判断 BoundInstanceErrors的Count并做相应处理;2.把 OnTopicChanging中的验证移到 OnValidate中去....怨念啊~~~我不知道ASP.NET MVC是否存在类似的问题,有条件的朋友可以测试一下。

转载于:https://www.cnblogs.com/yzlhccdec/archive/2008/03/21/1116725.html

相关资源:数据结构—成绩单生成器

最新回复(0)