ascx (用户控件) 可以做成容器形式么

madpc 2008-10-23 01:42:23
希望可以包含其它控件,请高手指点
...全文
181 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jzywh 2008-10-24
  • 打赏
  • 举报
回复
Template确实是弱项
szh3210 2008-10-23
  • 打赏
  • 举报
回复
up
madpc 2008-10-23
  • 打赏
  • 举报
回复
结贴,顺便膜拜一下sp1234,向你学习
gjfizx 2008-10-23
  • 打赏
  • 举报
回复
mark
  • 打赏
  • 举报
回复
对! 大量使用masterpage或者自定义的模板布局,可以让web应用程序界面变得特别整洁一致,一看就是大公司的产品。用户的“试探”着就可以自己学会许多重要操作,问题操作细节方法完全一致。。
madpc 2008-10-23
  • 打赏
  • 举报
回复
才看到sp1234的,高,应该就是我要的东东了,试试先
btw, 我是因为不喜欢materpage才想到自已"发明"一个,现在才知道还有你说的这种方式
  • 打赏
  • 举报
回复
嗯,csdn上的提问者几乎都不了解模板技术(现在似乎对输出缓存技术的兴趣有些高了)。你能提出这个问题是很难得的。
madpc 2008-10-23
  • 打赏
  • 举报
回复
可是我在目的页上这样写会出错
<mycontrol:box>
<input type="text"/>
</mycontrol:box>
说这个控件不能包含内容
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 madpc 的回复:]
我是指在目地页上做为容器来使用

<mycontrol:box>
<input type="text"/>
</mycontrol:box>

比如box中有一个div
最终把input放在这个div中
[/Quote]

我的例子中,用户无需知道布局的table,只要设计两个模板中的界面就可以了。跟你的是一个意思。你的需求中,没有区分模板。而实际上应该这样写使用容器:

<uc1:TestContents ID="TestContents1" runat="server">
<内容>
<input type="text" />
</内容>
<广告>
hello,这是广告词
</广告>
</uc1:TestContents>
  • 打赏
  • 举报
回复
我写一个demo:

<%@ Control Language="C#" %>

<script runat="server">
[TemplateContainer(typeof(MyTemplateContainer))]
[PersistenceMode(PersistenceMode .InnerProperty)]
public ITemplate 内容 { get; set; }

[TemplateContainer(typeof(MyTemplateContainer))]
[PersistenceMode(PersistenceMode.InnerProperty)]
public ITemplate 广告 { get; set; }

public class MyTemplateContainer : Control, INamingContainer
{
public MyTemplateContainer(string ID)
{
this.ID = ID;
}
}

protected override void CreateChildControls()
{
base.CreateChildControls();
this.PlaceHolder1.Controls.Clear();
if (this.内容 != null)
{
MyTemplateContainer c = new MyTemplateContainer("content1");
this.内容.InstantiateIn(c);
this.PlaceHolder1.Controls.Add(c);
};
this.PlaceHolder2.Controls.Clear();
if (this.广告 != null)
{
MyTemplateContainer c = new MyTemplateContainer("content2");
this.广告.InstantiateIn(c);
this.PlaceHolder2.Controls.Add(c);
}
}
</script>

<table width="100%">
<tr>
<td>
内容:<br />
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</td>
<td>
<asp:PlaceHolder ID="PlaceHolder2" runat="server"></asp:PlaceHolder>
</td>
</tr>
</table>


将这个ascx放入网站,然后“生成/编译 网站”。之后,你就可以在页面中拖入它使用。当你在类似于

<uc1:TestContents ID="TestContents1" runat="server">
</uc1:TestContents>

中间按“<"的时候,立刻看到智能感知显示两个模板供你使用。

masterpage只能让你为整个页面提供模板中内容,而自定义的用户控件则可以让你为用户控件中的小区域提供类似使用了mastpage的页面的同样的设计方式。这样,容器定义高层的布局设计,而将细节作为模板可以由使用者动态提供。
888228 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 madpc 的回复:]
我是指在目地页上做为容器来使用

<mycontrol:box>
<input type="text"/>
</mycontrol:box>

比如box中有一个div
最终把input放在这个div中
[/Quote]


同样可以

你在控件中定义一个 public 就可以了。
然后在使用的时候将参数传入 / 传出
madpc 2008-10-23
  • 打赏
  • 举报
回复
我是指在目地页上做为容器来使用

<mycontrol:box>
<input type="text"/>
</mycontrol:box>

比如box中有一个div
最终把input放在这个div中
qinhl99 2008-10-23
  • 打赏
  • 举报
回复
本来就可以,还有其它问题吗?
jzywh 2008-10-23
  • 打赏
  • 举报
回复
ascx 本来就是个容器,可以包含其它控件阿!
为达到最佳效果,推荐使用九网互联的ASP.net空间,支持ASP.net版本1.1和2.0在线切换、在线脚本映射、ASP.net具体错误信息在线查看。使用说明:〈1〉本产品需要在 Asp.net 2.0环境下运行。〈2〉下载本软件后解压缩,将其中的bin文件夹中所有文件剪切到网站根目录的bin文件夹中。将配置文件web.config整合到自己的网站配置文件里,然后把文件夹hhfeditor拷贝到网站根目录,注意:hhfeditor文件夹下不再有hhfeditor包含文件夹,请拷贝的时候留意勿将整个的文件夹都拷贝到了根目录。〈3〉调用方法介绍:在需要调用控件的页面头部输入“”其中hhfeditor1.ascx是简洁版编辑器(适合网页前台客户简单留言等)、hhfeditor2.ascx是功能版编辑器(适合论坛发帖等)、hhfeditor3.ascx是全能版编辑器(适合后台管理时新闻发布或者网页编辑)然后在需要调用的地方输入“”即引用了控件。获取编辑器值和设置初始值的方法:(VB.net调用)'获取值Me.TextBox1.Text = Me.editkj.Getvalue()'设置值Me.editkj.Setvalue(Me.TextBox1.Text)编辑器初始值就被设为TextBox1中的值或Me.editkj.Setvalue('www.hhfsoft.com')编辑器初始值就被设为www.hhfsoft.com(C#.net调用)'获取值this.TextBox1.Text = Convert.ToString(this.editkj.Getvalue());'设置值this.editkj.Setvalue(this.TextBox1.Text);编辑器初始值就被设为TextBox1中的值或this.editkj.Setvalue('www.hhfsoft.com');编辑器初始值就被设为www.hhfsoft.com〈4〉sysconfig.aspx配置文件介绍sysconfig.aspx配置文件是2.6版本中新增加的功能,大家可以利用这个文件对图片的上传路径等进行自定义设定。〈5〉自定义表情图标。hhfeditor\hhfpic\face下有5个文件夹,分别存放了5类表情,您可以根据需要进行更换,图片的编号和格式请勿改变,每个文件夹下可放60个表情〈6〉自定义特殊字符。hhfeditor\hhfpic\face有2个文本文件,其中可以自由设置一些特殊字符〈7〉编辑器初始宽、高设置。宽度为自适应容器宽度,即包含着控件容器有多宽显示效果就有多宽,高度设置在 hhfeditor1.ascx、hhfeditor2.ascx、hhfeditor3.ascx里面,使用文本方式打开文件修改“var Editheight=200; //编辑器默认高度”这里面的值就可以了,单位(像素)。〈8〉图片大小限制。.net默认会限制上传图片的大小,如果要做修改,请在配置文件中做如下更改在之间加入\uff1aexecutionTimeout='90'maxRequestLength='2097150'useFullyQualifiedRedirectUrl='false'minFreeThreads='8'minLocalRequestFreeThreads='4'appRequestQueueLimit='100'/>〈9〉编辑器颜色修改。打开hhfeditor下面的两个样式表。找到下面部分,将颜色代码修改为您需要的颜色即可#ALL{background-color: #9ebef5;width: 100%;height: 100%;}.alertbgc{background-color: #9ebef5;}〈10〉本编辑器永久免费。希望大家多支持我,帮我推广这个编辑器,谢谢!〈11〉开源问题说明:本控件暂时对外不开放源码。因为世界上有可恶之人喜欢把别人的东西搬过来改改后就说是自己的作品,到处招摇撞骗唯利是图,为了避免本控件遭遇这些情况,所以暂时不公开源代码,特此将不开源的原因说明一下。破解软件进行学习不可耻,可耻的是偷窃别人成果换成钞票装进自己的口袋,并且还往自己脸上贴金。大家能下载到这个控件,说明我们都是同行。我们都能明白自己的成果来之不易,希望我们彼此尊重,互相学习!〈12〉在使用过程中如果遇到问题,欢迎提出!升级说明:一、路径问题。旧版本中,如果调用hhfeditor控件的页面和hhfeditor文件夹不在同一级目录会出现css样式路径错误的情况,现在已经将问题修正。现在只需将hhfeditor文件夹放在网站根目录即可调用。二、浏览器问题。由于IE6、IE7、火狐浏览器对css样式的支持并不完全相同,所以导致旧版本在不同的浏览器中浏览会出现版面

62,078

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧