Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 部分用户控制_C#_Asp.net_User Controls_Webforms_Partial Classes - Fatal编程技术网

C# 部分用户控制

C# 部分用户控制,c#,asp.net,user-controls,webforms,partial-classes,C#,Asp.net,User Controls,Webforms,Partial Classes,在Asp.net Web窗体中,为什么用户控件必须是局部的?我试图删除partial关键字,它显示: 上缺少部分修饰符 型式“试验”的声明;另一个 此类型的部分声明 存在 另一份声明在哪里 我正在尝试通过用户控件传递泛型类型,我如何才能做到这一点?我不能,除非我也改变另一个声明。我找不到它,所以我删除了partial关键字 注: 你有3个文件,如果你制作网站应用程序,但如果你制作网站,你只有2个文件 UserControl.ascx UserControl.ascx.cs 那么在网站上,其他

在Asp.net Web窗体中,为什么用户控件必须是局部的?我试图删除partial关键字,它显示:

上缺少部分修饰符 型式“试验”的声明;另一个 此类型的部分声明 存在

另一份声明在哪里

我正在尝试通过用户控件传递泛型类型,我如何才能做到这一点?我不能,除非我也改变另一个声明。我找不到它,所以我删除了partial关键字

注: 你有3个文件,如果你制作网站应用程序,但如果你制作网站,你只有2个文件

UserControl.ascx
UserControl.ascx.cs 
那么在网站上,其他声明在哪里



我想要通用的原因是因为我制作了一个网格用户控件,所以我想传递数据源将具有的类型。

每个用户控件实际上有三个文件

UserControl.ascx
UserControl.cs
UserControl.designer.cs

设计器文件有一个
partial
实现,因为您的代码隐藏也必须是
partial

它们必须是partial的,因为设计器会自动生成您在设计窗口中执行的操作。通常,该代码位于
foo.designer.cs
(或asp.net表单的任何扩展名)中。如果要更改类,必须在没有设计器的情况下手动生成UI,或者使用设计器并将代码复制到适当的类中。

它们不必是分部类,事实上,我从未使用分部类。一些代码生成工具将使用partial,这样它们就可以更容易地根据GUI工作更改位,而不需要您,并且它会相互妨碍,但是这是为了工具而不是为了代码。

ASP.NET对codehind使用分部类,因为它必须将您在ASPX文件中声明的所有服务器端控件生成一个类,并合并代码绑定附带的所有其他数据文件。它允许ASP.NET使用的类分布在多个文件中

发件人:

代码文件包含一个部分 类,即类声明 使用关键字partial(在中为partial) (Visual Basic)表示 只包含全部代码的一部分 这就构成了本学期的全部课程 页在分部类中,添加 应用程序所使用的代码 需要为该页添加

这是关键部分:

编译页面时,ASP.NET 基于 .aspx文件;这门课是部分的 类文件的代码隐藏类。 生成的部分类文件 包含页的 控制。此分部类启用 您的代码隐藏文件将用作 一个完整类的一部分,没有 要求您声明控件 明确地说


通过向用户控件添加泛型类型,您试图做什么?您可以通过向UserControl添加
类型
属性并使用该属性来实现这一点吗?

请详细解释为什么必须使用泛型?它必须是部分设计师。Designer放置runat=“server”组件声明,这些声明在控制事件句柄中被视为私有成员。实际上是的,如果制作Web应用程序,您确实有3个文件,但如果制作网站,您只会得到2个文件!UserControl.ascx UserControl.ascx.cs那么在网站中,另一个声明在哪里?它被编译到
bin
目录下的
.dll
文件中。@zeus请参见下面我的答案,当编译页面时,
ASP.NET会根据.aspx文件生成一个分部类我将只创建一个类型属性,它似乎不会作为泛型发生,尽管它应该这样做。谢谢Kelsey。你能通过声明嵌套在
UserControl
类中的泛型类型来实现你想要的吗?