部分用户控制

时间:2010-08-19 00:39:38

标签: c# asp.net user-controls webforms partial-classes

在Asp.net Web表单中,为什么用户控件必须是部分的?我试图删除partial关键字,然后说:

  

缺少部分修饰符   “测试”类型的声明;另一个   这种类型的部分声明   存在

另一份声明在哪里?

我试图通过用户控件传递泛型类型,我该怎么做?除非我改变其他声明,否则我不能。我找不到它所以我删除了部分关键字。

注意: 如果您正在制作WebApplication,那么您有3个文件,但如果您的制作网站只获得2个文件!

UserControl.ascx
UserControl.ascx.cs 

所以在网站上哪个是另一个声明?


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

4 个答案:

答案 0 :(得分:1)

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

UserControl.ascx
UserControl.cs
UserControl.designer.cs

设计器文件有一个partial实现,因为你的代码背后也必须是partial

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

来自MSDN

  

代码文件包含部分内容   class - 即类声明   关键字partial(Partial in。)   Visual Basic)表明它   仅包含部分总代码   这构成了全班   页。在部分类中,您添加   您的应用程序的代码   需要页面。

这是关键部分:

  

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

通过向用户控件添加泛型类型,您想要做什么?你能通过向UserControl添加Type属性然后使用它来完成这个吗?

答案 3 :(得分:0)

他们不必是偏袒的,事实上我从来没有使用过部分类。一些代码生成工具将使用partial,以便他们可以更容易地根据您在没有您的情况下执行的GUI工作来改变位,并且它可以相互替代,但这是针对工具而不是代码。