以下代码示例:(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的强类型视图。
有什么好主意吗?
答案 0 :(得分:9)
.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>
请参阅:
答案 1 :(得分:2)
这可能有点晚了,但这似乎是一个很好的解决方案:
http://dotnetminute.blogspot.com/2012/04/creating-strongly-typed-repeater.html
答案 2 :(得分:0)