首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET嵌套自定义模板

问ASP.NET嵌套自定义模板
EN

Stack Overflow用户
提问于 2010-05-04 22:24:39
回答 2查看 1K关注 0票数 0

我正在考虑将一些用户控件转换为使用模板。其中一个是我自己的UC,它包含一些控件,其中一个是中继器。是否可以从第一级用户控件的模板(将在页面上)指定第二级用户控件的模板?

EN

回答 2

Stack Overflow用户

发布于 2010-05-09 00:23:12

假设我正确理解了您的问题,请尝试如下所示:

Page.aspx:

代码语言:javascript
复制
<%@ Page Language="C#" %>
<%@ Register src="UC.ascx" tagname="UC" tagprefix="uc1" %>

<uc1:UC ID="UC1" runat="server">
<RepeaterTemplate>
    <%# Eval("Name") %> <%# Eval("Age") %><br />
</RepeaterTemplate>
</uc1:UC>

UC.ascx:

代码语言:javascript
复制
<%@ Control Language="C#" ClassName="UC" %>

<script runat="server">
    class Person {
        public string Name { get; set; }
        public int Age { get; set; }
    }

    protected void Page_Load(object sender, EventArgs e) {
        repeater1.ItemTemplate = RepeaterTemplate;
        repeater1.DataSource = new Person[] {
            new Person { Name="Joe", Age=20},
            new Person { Name="Jack", Age=30},
        };
        repeater1.DataBind();
    }

    public ITemplate RepeaterTemplate { get; set; }
</script>

<asp:Repeater runat="server" ID="repeater1">
</asp:Repeater>

这基本上是将外部页面上指定的模板传递给用户控件中的中继器。

这可能不是你想要的场景,但希望能给你一些启发。

票数 1
EN

Stack Overflow用户

发布于 2010-05-11 00:26:10

我不确定我是否理解了你的问题,但是我做了很多使用动态模板的多级中继器。我使用不带代码的UserControls作为放置模板html的方便位置。

在后台代码中(例如来自父转发器的ItemDataBound事件),我选择适当的模板并设置它:

代码语言:javascript
复制
repeater.ItemTemplate = MyBase.LoadTemplate(templateControlName)
repeater.DataSource = dataSource
repeater.DataBind()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2766122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档