2009-07-14 4 views
2

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

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

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

+0

Я знаю, что вы можете compbine WinForms с MVC ... Но человек ... Я бы не рекомендовал его. Вы окажетесь в том месте, где вы не хотите быть. Возможно, попробуйте поставить свой RenderPartial внутри оператора <%# %>. –

ответ

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

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

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

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

Не делают жизнь тяжелее, чем это должно быть ...

+0

+1 для «не делайте жизнь труднее, чем нужно». –

+0

Все легко, но <% Html.RenderPartial("UserControl1", o.Title);%> делает это жестким, он отличается от других расширений html. Спасибо в любом случае –

0

Попробуйте поместить свой RenderPartial внутри <%# %> заявления как:

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

Спасибо за вашу помощь, но я получил исключение для этой компиляции: CS1026:) ожидается Я тестирую его, прежде чем он не будет работать еще раз спасибо ... –

Смежные вопросы