2

我正在尝试将 Eval 传递给 ASP.NET 中继器内的 Html.RenderPartial 但它不起作用任何人都可以帮忙吗?

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

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

4

2 回答 2

5
与它需要一个返回字符串的表达式相同,因此要进行此编译,您必须调用一个调用 Html.RenderPartial() 的方法,然后返回一个空字符串:
<%
受保护的字符串 RenderControl(对象数据项)
{
    Html.RenderPartial("UserControl1", ((MyType) dataItem).Title);
    返回 ””;
}
%>

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

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

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

不要让生活变得比它需要的更难......

于 2009-07-15T01:06:30.790 回答
0

尝试将您的 RenderPartial 放在内部<%# %>语句中,例如:

<asp:Repeater runat="server">
    <ItemTemplate>
        <%# Html.RenderPartial("UserControl1",Eval("Title")); %>
    </ItemTemplate>
</asp:Repeater>
于 2009-07-14T22:07:49.167 回答