在使用NHibernate为页面数据控件绑定数据时,出现如下提示:“未为能加载视图状态,正在向其中加载视图状态的控件树必须与前一请求期间用于保存视图状态的控件树相匹配。”
发生以上错误的主要是问题是在绑定数据的时候,如以下代码:
<%# Eval("xxx表.xxx字段")%>
因为有NHibernate的存在,以上Eval会触发NHibernate的延迟加载,然而当数据库中不存在对应的表数据的时候,就会产生这个错误。
如果要解决以上的问题的话,可以在<many-to-one>的配置当中加入属性not-fount="ignore"这样可以在延迟加载时,当数据库不存在数据时返回null,因此上述代码便可改为:
<%# Eval("xxx表") == null ? "null" : Eval("xxx表.xxx字段")%>