在ASP.NET Repeater Control中将Container.Eval传递给(Html.ReaderPartial)

时间:2009-07-14 21:59:54

标签: asp.net asp.net-mvc repeater htmlextensions

我正在尝试将Eval传递给ASP.NET Repeater中的Html.RenderPartial,但它无法正常工作吗?

<asp:Repeater runat="server">
            <ItemTemplate>
                <% Html.RenderPartial("UserControl1",Eval("Title")); %>
            </ItemTemplate>
</asp:Repeater>

顺便说一下,我知道我可以通过其他方式来做,但我想知道它是否可行。

2 个答案:

答案 0 :(得分:5)

与它需要一个返回字符串的表达式是一样的,所以要进行这种编译,你必须调用一个调用Html.RenderPartial()的方法,然后返回一个空字符串:
<%
protected string RenderControl(object dataItem) 
{
    Html.RenderPartial("UserControl1", ((MyType) dataItem).Title);
    return "";
}
%>

... <%# RenderControl(Container.DataItem) %> ...

我只会使用foreach - 混合WebForms数据绑定和MVC部分呈现是不可预测的,充其量:

<% foreach (MyObject o in data) { Html.RenderPartial("UserControl1", o.Title); } %>

不要让生活变得更加艰难......

答案 1 :(得分:0)

尝试将RenderPartial放在<%# %>语句中,如:

<asp:Repeater runat="server">
    <ItemTemplate>
        <%# Html.RenderPartial("UserControl1",Eval("Title")); %>
    </ItemTemplate>
</asp:Repeater>