Передача 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(), а затем возвращает пустую строку:
2009-07-15 01:06
<% защищенная строка 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>