【问题标题】:Strong typed Container in WebFormsWebForms 中的强类型容器
【发布时间】:2009-06-01 23:05:41
【问题描述】:

以下代码示例:(ASP.NET WebForms)

<asp:Content ContentPlaceHolderID="Contents" runat="server">
    <div class="blogpost-list">
        <asp:Repeater ID="blogList" runat="server">
            <ItemTemplate>
                <h2 class="blogpost-title">
                    <%# (Container.DataItem as BlogPost).Title %>
                </h2>
                <p class="blogpost-meta">
                </p>
                <p class="blogpost-content">
                    <%# (Container.DataItem as BlogPost).ParsedContent %>
                </p>
            </ItemTemplate>
        </asp:Repeater>
    </div>
</asp:Content>

现在我想做的是避免 DataItem 的内容转换,即。这一行:

<%# (Container.DataItem as BlogPost).Title %>

我受到 ASP.NET MVC 的启发,想知道我是否可以创建一个强类型、视图并将其定义为:

<%@ Page
    Language="C#" MasterPageFile="~/Blog.Master" 
    AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
    Inherits="MyBlog.Default<MyStrongViewType>"
%>

或任何其他避免类型转换的方式,并且通常为 ASP.NET WebForms 提供强类型化视图。

有什么好主意吗?

【问题讨论】:

    标签: asp.net webforms


    【解决方案1】:

    .NET 4.5 对此有一个很好的解决方案。您只需设置要在中继器本身上使用的数据类型。

       <asp:Repeater ID="blogList" runat="server" ItemType="BlogPost">
            <ItemTemplate>
                <h2 class="blogpost-title">
                    <%# Item.Title %>
                </h2>
                <p class="blogpost-meta">
                </p>
                <p class="blogpost-content">
                    <%# Item.ParsedContent %>
                </p>
            </ItemTemplate>
        </asp:Repeater>
    

    见:

    【讨论】:

      【解决方案2】:

      这可能有点晚了,但这似乎是一个不错的解决方案:

      http://dotnetminute.blogspot.com/2012/04/creating-strongly-typed-repeater.html

      【讨论】:

        【解决方案3】:

        我认为您可以从中继器控件继承并使其通用(例如中继器)。但是您也需要重写/继承 RepeaterItem 类。
        您可以使用thisthis 文章作为示例。

        【讨论】:

          猜你喜欢
          • 2010-11-08
          • 2011-03-17
          • 2010-09-15
          • 1970-01-01
          • 1970-01-01
          • 2021-06-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多