2009-07-14 9 views
2

J'essaie de transmettre Eval à Html.RenderPartial dans ASP.NET Repeater mais cela ne fonctionne pas, quelqu'un peut-il m'aider? Par ailleurs, je sais que je peux le faire d'autres façons, mais je veux savoir si c'est faisable ou non.Passing Container.Eval à (Html.ReaderPartial) dans le contrôle de répéteur ASP.NET

+0

Je sais que vous pouvez compbine WinForms avec MVC ... Mais l'homme ... Je ne le recommanderais pas. Vous allez finir dans un endroit que vous ne voulez pas être. Peut-être essayer de mettre votre RenderPartial dans l'instruction <%# %>. –

Répondre

5
est le même que le fait qu'il attend une expression qui renvoie une chaîne, pour ainsi obtenir ce que vous devez appeler la compilation d'une méthode qui appelle Html.RenderPartial(), puis retourne une chaîne vide:
 
<% 
protected string RenderControl(object dataItem) 
{ 
    Html.RenderPartial("UserControl1", ((MyType) dataItem).Title); 
    return ""; 
} 
%> 

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

Je voudrais simplement utiliser foreach si - mélange WebForms données obligatoires et MVC rendu partiel est imprévisible, au mieux:

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

Ne pas rendre la vie plus difficile que ce doit être ...

+0

+1 pour "ne pas rendre la vie plus difficile que nécessaire". –

+0

Tout est facile, mais <% Html.RenderPartial("UserControl1", o.Title);%> rend difficile, il est différent des autres extensions html Merci quand même –

0

Essayez de mettre votre RenderPartial dans <%# %> déclaration comme:

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

Merci pour votre aide, mais j'ai obtenu cette exception de compilation: CS1026:) Je l'ai testé avant qu'il ne fonctionne pas merci encore ... –