protected System.Web.UI.WebControls.DropDownList _findModeList;
我以为在.net 2中使用CodeFile属性就不需要这样做了,但是当我省略它时,它无法编译。
然而,当我包含它时,它可以编译,但是在代码文件中尝试使用_findModeList时会出现“对象引用未设置为对象的实例”错误。
在.net 2.0及以上版本中,是否可以将用户控件放入类库中?
protected System.Web.UI.WebControls.DropDownList _findModeList;
我以为在.net 2中使用CodeFile属性就不需要这样做了,但是当我省略它时,它无法编译。
然而,当我包含它时,它可以编译,但是在代码文件中尝试使用_findModeList时会出现“对象引用未设置为对象的实例”错误。
在.net 2.0及以上版本中,是否可以将用户控件放入类库中?
不是真的。每个使用它的Web应用程序项目都应该包含.ASCX文件。为了避免重复,您可以将用户控件存储在类库的文件夹中,并使用Visual Studio的“添加为链接”功能。
在Web应用程序的上下文菜单中选择“添加现有项”,选择用户控件,而不是单击“添加”按钮,请单击该按钮中的箭头并选择“添加为链接”。
你正在开发 Web 应用程序项目吗?还是网站?这很令人困惑,我知道...
如果你正在使用 WAP,请使用 CodeFile,并让 ASP.NET 为你生成 .designer.cs 文件。不要在 .acsx 中声明对象。当你在 CodeFile 引用的 .cs 文件中显式声明 _findModeList 时,你正在声明一个新的/不同的 DropDownList。这就是为什么你得到空引用...它还没有被初始化。如果你没有 .designer 文件,请右键单击 Solution Explorer 中的 .ascx 并单击“转换为 Web 应用程序”。
如果你正在处理的是站点而不是 WAP,请使用 CodeBehind 属性。它将继续像在 ASP.NET 1.1 中那样工作并即时编译。
要使控件完全存在于 DLL 中,请使用“定制控件”而不是用户控件。这又令人困惑。
实际上,您可以尝试创建新的Web应用程序项目而不是创建新的网站,因为这两者是不同的项目。
创建Web应用程序后,只需创建您的用户控件(.ascx)。之后,您可以尝试重新构建Web应用程序。完成后,您可以浏览到bin目录,那里应该有您的Web应用程序的dll文件。现在,您可以在另一个网站/ Web应用程序项目中使用此dll。只需添加对此dll的引用即可。
你尝试过在<%@ Control %>标记中更改/添加Inherits属性吗?
<%@ Control Language="C#" CodeBehind="<PathToTheFile>" Inherits="namespace.and.classname" %>