C# 用户控件中的内容
我几乎不好意思问这个问题,但现在我们开始 我不是用户控制方面的专家,需要一些关于如何实现特定功能的设计建议 目标是拥有一个usercontrol,它将呈现为html元素和css的复杂结构,以形成一个优雅的容器框。问题在于如何填充框的内容,因为usercontrol的每个实例都有自己的HTML内容。usercontrol的content container div将嵌套在呈现的html结构的深处。以编程方式设置usercontrol的内容或使用属性是不可取的 在psuedo代码中,所需的语法如下:C# 用户控件中的内容,c#,asp.net,user-controls,servercontrols,C#,Asp.net,User Controls,Servercontrols,我几乎不好意思问这个问题,但现在我们开始 我不是用户控制方面的专家,需要一些关于如何实现特定功能的设计建议 目标是拥有一个usercontrol,它将呈现为html元素和css的复杂结构,以形成一个优雅的容器框。问题在于如何填充框的内容,因为usercontrol的每个实例都有自己的HTML内容。usercontrol的content container div将嵌套在呈现的html结构的深处。以编程方式设置usercontrol的内容或使用属性是不可取的 在psuedo代码中,所需的语法如下:
<usercontrol Title="Some Title"><p>some random html content</p></usercontrol>
<uc:MyControl Title="Some TItle" runat="server">
<ContentsTemplate>
<p>some random html content</p>
</ContentsTemplate>
</uc:MyControl>
一些随机html内容
呈现的usercontrol示例如下:
<div class="CommonBox">
<div class="Title">Some Title</div>
<div class="Content"><p>some random html content</p></div>
</div>
一些头衔
一些随机的html内容
我希望我的解释是充分的。这是否对任何人都有意义,或者所需的功能无法实现
干杯
编辑
我尝试了模板化的用户控制建议,希望得到一个合适的解决方案。我“后退”,现在有一个工作模板用户控件。我的下一个问题是,如何以编程方式访问嵌套在模板中的控件。。。假设示例链接的“Description”模板中有一个textbox控件,我想通过编程方式设置它的值?这可能吗 是的,这是很有可能的。控件中的属性将变成与示例中的“Title”类似的属性。然后,您可以使用扩展控件,为需要的其他html输入添加子节点
享受吧 你要找的肯定是可能的。一种解决方案是创建一个
模板化用户控件
。最后,您可以定义与示例外观类似的内容。比如:
<usercontrol Title="Some Title"><p>some random html content</p></usercontrol>
<uc:MyControl Title="Some TItle" runat="server">
<ContentsTemplate>
<p>some random html content</p>
</ContentsTemplate>
</uc:MyControl>
一些随机的html内容
。我过去成功地做到了这一点。关于这个主题,还有很多参考资料。看起来您需要两个属性用于自定义服务器控件 Title属性来呈现第一个内部div的内容 内容用于第二个。如果要在服务器控件内设置内容,应为属性使用
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
属性,如下所示:
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
public string Contents
{
get
{
string contents = (string)ViewState["Contents"];
return (contents == null) ? String.Empty : contents;
}
set
{
ViewState["Contents"] = value;
}
}
PersistenceModeAttribute在MSDN中的解释如下:
通过
InnerDefaultProperty参数
指定一个可视化设计器
应该保留要保存的属性
该属性作为内部属性应用
默认属性。这意味着
VisualDesigner保留该属性
在控件的标记中。这个
属性只能应用于一个
属性,因为只有一个属性
可以在控件的
标签。属性值不正确
包裹在一个特殊的标签里
有关更多信息,请查看。我认为第二部分需要澄清,他希望在用户控件中包含任何内容,而不仅仅是特定对象。模板是一种很好的方法。我想知道是否有一种可靠且简单的方法可以做到这一点,而不必考虑在使用控件时是否可以节省一个级别的元素。使用自定义控件很容易,但我还没有真正尝试使用
.ascx
文件。@Matti:我认为您可以创建一个基类,例如TemplatedUserControl
,它负责基本/常见功能。继承将是MyControl
TemplatedUserControl
UserControl
。我已经将此方法用于其他常见的用户控件需求,效果非常好。@KP:不过,无论何时使用控件,您仍然需要
。在我看来,如果定制的装饰像,比如说,
,你可以把它放在你的东西周围,那将是最好的(免责声明:我不赞成使用asp:Panel)