2010-09-29 13 views
22

Estoy intentando utilizar Html.RenderPartial en acsx archivo y estoy recibiendo un error:Html.RenderPartial() en los archivos ascx

Compiler Error Message: CS1973: 'System.Web.Mvc.HtmlHelper' has no applicable method named 'RenderPartial' but appears to have an extension method by that name. Extension methods cannot be dynamically dispatched. Consider casting the dynamic arguments or calling the extension method without the extension method syntax

<a href="/projects/<%=project.Id %>"> 
    <% Html.Label("fdf"); %> 
    <% Html.RenderPartial("ProjectName", Model.Id); %></a></li> 
<%} %> 

Sin embargo he de importación espacios de nombres neccessary , por lo que no será de error en

<% Html.Label("fdf"); %> 

¿existen métodos para utilizar Html.RenderPartial en ascx?

Respuesta

40

El compilador no puede elegir el método correcto porque su modelo es dynamic. Cambiar la llamada a:

<% Html.RenderPartial("ProjectName", (int)(Model.Id)); %> 

O cualquier otro tipo de datos Id es.

+0

+1 ¡Resolvió mi problema también! ¡Gracias! – Rob

+3

@Rob, si alguna vez cambia a Razor, considere usar esto: http://stackoverflow.com/questions/4047543/render-partial-view-with-dynamic-model-in-razor-view-engine-and-asp -net-mvc-3/5357049 # 5357049 – juan

2

La única forma que encontré para pasar, por ejemplo. un IEnumerable era crear una variable local y pasar en este. Por ejemplo @{ IEnumerable<Demo.Models.Friend> friends = Model.Friends; Html.RenderPartial("_FriendsList", friends); }

Html.RenderPartial("_FriendsList", (IEnumerable<Demo.Models.Friends>)(Model.Friends)); no funcionó!

8

En caso de que alguien más ha hecho el mismo error que yo:

@Model MyViewModel 

Esto tratar su modelo dinámico como

@model MyViewModel 

Ésta es una vista correctamente inflexible. Tenga en cuenta la falta de capitalización!

Tenga en cuenta que esto es Razor, a diferencia de la pregunta original.

+0

Verdaderamente un poco de genio. Realmente me ayudó a ahorrar tiempo. – udog

Cuestiones relacionadas