相关疑难解决方法(0)

如何在asp:Repeater中改变我的ItemTemplate?

我有一个用户控件,用于显示搜索结果.显示的每个结果的HTML将根据显示的结果类型而变化:"联系人"以一种方式显示,"新闻文章"显示在另一种中,等等.大约有10种不同类型的结果都被标记出来当他们使用HTML时会有所不同 - 所以我需要大约10个不同的模板用于个别结果,我可以根据显示的当前项目进行选择.

我用a asp:Repeater来显示结果,但我不知道如何选择合适的模板asp:Repeater <ItemTemplate>.理想情况下,我希望ASP根据通过searchResultsRepeater.DataSource- 传入的对象类型选择合适的模板使用- 但不幸的是我不能使用switch on type(请参阅此博客条目,了解C#switch on type).但是,我可以通过枚举值来显示所显示的结果类型.

在后端C#代码,我有一个抽象内嵌SearchResult类,并且该类的孩子喜欢ContactSearchResult,NewsArticleSearchResultsearchResultsRepeater.DataSource将被绑定到List<SearchResult>.每个字段都SearchResult包含一个ResultListingType type字段,用于显示要显示的列表类型.

尝试1:在ASP本身内部使用控制流程

我的第一次尝试是这样的:

        <asp:Repeater ID="searchResultsRepeater" runat="server">
        <ItemTemplate>
        <div class="item">

        <% switch (DataBinder.Eval(Container.DataItem, "type")) { %>

        <% case ResultListingType.CONTACT: %>

            <p><%# DataBinder.Eval(Container.DataItem, "firstName") %></p>
            <p><%# DataBinder.Eval(Container.DataItem, "lastName") %></p>

            <% break; %>

        <% case ResultListingType.NEWS: %>

            <p><%# DataBinder.Eval(Container.DataItem, "newsHeadline") %></p>
            <p><%# DataBinder.Eval(Container.DataItem, "newsDate") %></p>

            <% break; %>

        <% …
Run Code Online (Sandbox Code Playgroud)

c# asp.net

13
推荐指数
1
解决办法
2万
查看次数

标签 统计

asp.net ×1

c# ×1