Передача Container.Eval (Html.ReaderPartial) внутри элемента управления повторителя ASP.NET

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

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

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

2 ответа

Решение
Он такой же, как и в том, что он ожидает выражение, которое возвращает строку, поэтому для получения этой компиляции необходимо вызвать метод, который вызывает Html.RenderPartial(), а затем возвращает пустую строку:
<%
защищенная строка RenderControl (объект dataItem) 
{
    Html.RenderPartial ("UserControl1", ((MyType) dataItem).Title);
    вернуть "";
}
%>

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

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

<% foreach (MyObject o в данных) {Html.RenderPartial ("UserControl1", o.Title); }%>

Не делайте жизнь сложнее, чем нужно...

Попробуйте положить ваш RenderPartial внутри <%# %> утверждение как:

<asp:Repeater runat="server">
    <ItemTemplate>
        <%# Html.RenderPartial("UserControl1",Eval("Title")); %>
    </ItemTemplate>
</asp:Repeater>
Другие вопросы по тегам