我们有一个用c#编写的可更新的网站项目,它具有使用母版页,皮肤,用户控件等常用的web表单实现。 。到目前为止,我们忽略了将默认编译语言从VB更改为C#。但是,第二个我们改变它,我们看到下面的错误。将asp.net编译中的默认语言从vb更改为c时出错#
Object reference not set to an instance of an object. --->
System.NullReferenceException: Object reference not set to an instance
of an object. at ASP.Default.__DataBinding__control499(Object sender,
EventArgs e) at System.Web.UI.Control.OnDataBinding(EventArgs e) at
System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at
System.Web.UI.Control.DataBindChildren() at
System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at
System.Web.UI.Control.DataBindChildren() at
System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at
System.Web.UI.Control.DataBindChildren() at
System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at
System.Web.UI.Control.DataBindChildren() at
System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at
....
进一步的调查指出,正从一个主题相关的组件(来源:App_Theme_Default.zclakrlo)产生这个错误。有任何想法吗?
我的一位同事建议它可能与皮肤文件相关,因为我们有一个主题调用“默认”,并且没有办法在皮肤文件上指定语言。因此,当asp.net运行时试图在C#下编译它时,它会产生一个名称冲突?这有意义吗?
任何帮助表示赞赏。
更新: 事实证明,没有在皮肤文件的一个span标记看起来像下面这样:
<span runat="server" visible='<%# Eval("foo") %>'>
其中foo是一个字符串值,无论是“真”或“假” 。出于某种原因,这在VB编译下工作,但在C#中失败。
解决的办法是将foo的类型从字符串更改为布尔值。总而言之,非常奇怪的边缘情况!