Передача Container.Eval (Html.ReaderPartial) внутри элемента управления повторителя ASP.NET - PullRequest
2 голосов
/ 15 июля 2009

Я пытаюсь передать Eval в Html.RenderPartial внутри ASP.NET Repeater, но он не работает, может ли кто-нибудь помочь?

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

Кстати, я знаю, что могу сделать это другими способами, но я хочу знать, выполнимо это или нет.

Ответы [ 2 ]

5 голосов
/ 15 июля 2009
это то же самое, что и ожидание выражения, которое возвращает строку, поэтому для получения этой компиляции необходимо вызвать метод, который вызывает Html.RenderPartial (), а затем возвращает пустую строку:
<%
protected string RenderControl(object dataItem) 
{
    Html.RenderPartial("UserControl1", ((MyType) dataItem).Title);
    return "";
}
%>

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

Хотя я бы просто использовал foreach - смешивание привязки данных WebForms и частичного рендеринга MVC в лучшем случае непредсказуемо:

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

Не усложняй жизнь ...

0 голосов
/ 15 июля 2009

Попробуйте поместить ваш RenderPartial внутри <%# %> оператора, например:

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