|
|
1
10
向SpiffyControl添加基类,如:
然后让SpiffyControl继承该基类,如:
然后,您应该能够从Basepage类执行此操作:
|
|
|
2
4
更新:将用户控件放到单独的项目中的一个很好的副作用是,它们与web应用程序本身更加解耦,这反过来又会使它们更加可重用,并且根据它们的设计,也更加可测试。 |
|
|
3
2
因此,原始示例:
|
|
|
4
1
|
|
|
5
1
您可以将SpiffyControl移动到库中—这将为它提供更精确的命名空间,并允许您在其他项目中使用它。虽然这有点复杂-您已经创建了一个UserControl,但它在库中不起作用。UserControls使用codebehind模型-它们由两个文件组成,一个标记和一个代码。库似乎不支持codebehind模型,因此不能使用UserControl。您需要将该用户控件转换为web控件。 创建一个新的类库项目。打开项目的属性,并将AssemblyName和默认命名空间设置为SpiffyLibrary。 现在我们需要转换你的用户控件。首先,在新库中创建一个类。将其称为SpiffyControl,就像您现有的用户控件一样,但要使其继承自System.Web.UI.WebControl.CompositeControl。
... 应该成为。。。
... 然后,新的CreateChildControls函数应该如下所示:
注意,控件被声明为类字段;这样,所有类方法都可以看到它们。
现在,您可以在站点中的任何位置输入如下标记:
... 这将从自定义库加载web控件。 |
|
|
6
0
|
|
|
7
0
假设SpiffyControl和SpiffyPage位于同一命名空间中:
|
|
|
8
0
您也可以手动定义SpiffyControl的名称空间。为此,您需要同时更改代码隐藏和标记。
... 然后把它改成。。。
然后在标记中,调整@Control标题。所以如果你的@Control头是
... 然后把它改成。。。
|
|
|
9
0
假设您将在支持反射的环境中运行,则可以使用这些方法。
这样称呼它:
如果它被多次调用,您可能需要缓存类型信息。
|
|
|
10
0
它已经被提到了,但是一个界面应该可以工作。使用任何成员/方法创建ISpiffyControl,在SpiffyControl.ascx.vb中实现它,并在SpiffyPage中执行此操作:
|
|
|
11
0
如果我没看错的话,原来的海报有一个问题 在我的例子中,我的项目中的所有页面都继承自同一个基类,因此我不担心我的用户控件知道页面的基类这一事实。向建筑师道歉。 但是,我解决了这个问题,1)使用基类作为用户控件,2)使用公共名称空间。这启用了我需要的可见性,因为出于某种原因,用户控件的基类仍然无法看到页面基类的基类类型。
嗯。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |