问题起因:
要编写一个 UserControl 基类, 使得下游人员可以编写 ascx 来布局,
同时要使用一个三方 WebControl 子类来作为ascx标签的容器.思路:
0. WebControl 并非基于模板的, 不可使用 ascx 机制(疑问).
1. 自定义 UserControl 中创建三方 WebControl 子类,
2. 本 UserControl 子类中的标签放入到那个三方 WebControl 中.探索控件关系和问题:控件基类namespace demo
{
public class AjaxUserControl : UserControl
{
protected override void CreateChildControls()
{
HtmlGenericControl divHeader = new HtmlGenericControl("div");
divHeader.ID = "divHeader";
divHeader.Attributes["class"] = "section";
this.Controls.Add(divHeader); base.CreateChildControls();
HtmlGenericControl divFooter = new HtmlGenericControl("div");
divFooter.ID = "divFooter";
divFooter.Attributes["class"] = "section";
this.Controls.Add(divFooter);
}
}
}
ascx 布局:
<%@ Control AutoEventWireup="false" Inherits="demo.AjaxUserControl" %>
<div class="section">
<span id="lbl" runat="server">信息</span>
<div id="sub">
<span>正文</p>
</div>
</div>
生成了以下的 html:<div class="section">
<span id="ctl00_ContentPlaceHolder1_ajaxtest1_lbl">信息</span>
<div id="sub">
<span>正文</p>
</div>
</div>
<div id="ctl00_ContentPlaceHolder1_ajaxtest1_divHeader" class="section"></div>
<div id="ctl00_ContentPlaceHolder1_ajaxtest1_divFooter" class="section"></div>
注意到, 基类新增的那两个 div, 跟子类 ascx 标签中的是同级关系
而 usercontrol 自己没指定 html 标签.问题:
如何使得子类 ascx 中的标签被基类创建的某个 div 包绕.缘起, 使用三方 webcontrol 中的 ajax 功能 -- MagicAjax.
她能截取内部 asp.net 控件的回发, 改为ajax call.
要编写一个 UserControl 基类, 使得下游人员可以编写 ascx 来布局,
同时要使用一个三方 WebControl 子类来作为ascx标签的容器.思路:
0. WebControl 并非基于模板的, 不可使用 ascx 机制(疑问).
1. 自定义 UserControl 中创建三方 WebControl 子类,
2. 本 UserControl 子类中的标签放入到那个三方 WebControl 中.探索控件关系和问题:控件基类namespace demo
{
public class AjaxUserControl : UserControl
{
protected override void CreateChildControls()
{
HtmlGenericControl divHeader = new HtmlGenericControl("div");
divHeader.ID = "divHeader";
divHeader.Attributes["class"] = "section";
this.Controls.Add(divHeader); base.CreateChildControls();
HtmlGenericControl divFooter = new HtmlGenericControl("div");
divFooter.ID = "divFooter";
divFooter.Attributes["class"] = "section";
this.Controls.Add(divFooter);
}
}
}
ascx 布局:
<%@ Control AutoEventWireup="false" Inherits="demo.AjaxUserControl" %>
<div class="section">
<span id="lbl" runat="server">信息</span>
<div id="sub">
<span>正文</p>
</div>
</div>
生成了以下的 html:<div class="section">
<span id="ctl00_ContentPlaceHolder1_ajaxtest1_lbl">信息</span>
<div id="sub">
<span>正文</p>
</div>
</div>
<div id="ctl00_ContentPlaceHolder1_ajaxtest1_divHeader" class="section"></div>
<div id="ctl00_ContentPlaceHolder1_ajaxtest1_divFooter" class="section"></div>
注意到, 基类新增的那两个 div, 跟子类 ascx 标签中的是同级关系
而 usercontrol 自己没指定 html 标签.问题:
如何使得子类 ascx 中的标签被基类创建的某个 div 包绕.缘起, 使用三方 webcontrol 中的 ajax 功能 -- MagicAjax.
她能截取内部 asp.net 控件的回发, 改为ajax call.
解决方案 »
- 关于页面加载,状态条,实时的,不是模拟的
- .net 修改图像
- 用户控件按钮点击以后如何刷新本页?
- 怎么接收支付宝的退货申请后。同步数据库信息
- 关于DropDownList绑定问题?
- 为何在repeater表格线有的地方粗,有的地方细
- 新人求助:为什么我连接不上数据库 (我实在不知道该怎么办)
- [急...]用VS2005修改以前用VS2003做的程序,有两个问题求解(文件下载and无法切换到设计视图)?
- 前后台分离开发模式,权限如何做?
- ! ! ! 请问怎样对文本文件里的内容进行模糊查找呢
- Automation服务器不能创建对象
- 在asp.net如何用Repeater数据显示控件进行左边显示数据中间隔着一列右边接着显示数据的效果
谢谢你.我想形成这个层次:我的类
三方类
外部标签的以利用那个三方类的能力, 感觉是'我的类'的 Controls 要和 三方类的 Controls 产生关系.
protected override void CreateChildControls()
{
HtmlGenericControl divWrapper = new HtmlGenericControl("div");
divWrapper.ID = "divWrapper";
divWrapper.Attributes["class"] = "section"; Control[] ctrls = new Control[this.Controls.Count];
this.Controls.CopyTo(ctrls, 0);
this.Controls.Clear();
foreach (Control c in ctrls)
divWrapper.Controls.Add(c); this.Controls.Add(divWrapper); base.CreateChildControls();
}
还个掉包会不会对其他(状态, 事件等)产生影响.
Control[] ctrls = new Control[this.Controls.Count];
this.Controls.CopyTo(ctrls, 0);
this.Controls.Clear();
foreach (Control c in ctrls)
divWrapper.Controls.Add(c);
我准备放弃这个了