2010-09-29 24 views
22

J'essaie d'utiliser Html.RenderPartial dans acsx fichier et je reçois une erreur:L'utilisation Html.RenderPartial() dans les fichiers 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> 
<%} %> 

Cependant, j'ai importation neccessary namespaces , donc il ne sera pas erreur à

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

y a-t-il des méthodes pour utiliser Html.RenderPartial dans le fichier ascx?

Répondre

40

Le compilateur ne peut pas choisir la méthode correcte car votre modèle est dynamic. Modifiez l'appel à:

Ou tout autre type de données Id est.

+0

+1 Résolu mon problème aussi! Merci! – Rob

+3

@Rob, si jamais vous passez à Razor, pensez à l'utiliser: 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 seule façon que j'ai trouvé pour passer par exemple. un IEnumerable était de créer une variable locale et passer dans celui-ci. Pour l'exemple @{ IEnumerable<Demo.Models.Friend> friends = Model.Friends; Html.RenderPartial("_FriendsList", friends); }

Html.RenderPartial("_FriendsList", (IEnumerable<Demo.Models.Friends>)(Model.Friends)); ne fonctionnait pas!

8

Au cas où quelqu'un d'autre a fait la même erreur que moi:

@Model MyViewModel 

Cela traitera votre modèle comme dynamique

@model MyViewModel 

Ceci est une vue correctement fortement typé. Notez le manque de capitalisation!

Notez que c'est Razor, contrairement à la question d'origine.

+0

Vraiment un peu de génie. Cela m'a vraiment aidé à gagner du temps. – udog