web-dev-qa-db-fra.com

Utilisation de Html.RenderPartial () dans les fichiers ascx

J'essaie d'utiliser Html.RenderPartial dans un fichier acsx et j'obtiens une erreur:

Message d'erreur du compilateur: CS1973: 'System.Web.Mvc.HtmlHelper' n'a pas de méthode applicable nommée 'RenderPartial' mais semble avoir une méthode d'extension de ce nom. Les méthodes d'extension ne peuvent pas être distribuées dynamiquement. Envisagez de transtyper les arguments dynamiques ou d'appeler la méthode d'extension sans la syntaxe de la méthode d'extension

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

Cependant, j'ai importé des espaces de noms nécessaires, donc ce ne sera pas une erreur à

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

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

23
takayoshi

Le compilateur ne peut pas choisir la bonne méthode car votre modèle est dynamic. Changez l'appel en:

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

Ou tout autre ID de type de données est.

40
GvS

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

@Model MyViewModel

Cela traitera votre modèle comme dynamique

@model MyViewModel

Il s'agit d'une vue correctement fortement typée. Notez le manque de capitalisation!

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

8
StuartQ

Le seul moyen que j'ai trouvé pour passer par exemple. un IEnumerable devait créer une variable locale et passer celle-ci. Par exemple @{ IEnumerable<Demo.Models.Friend> friends = Model.Friends; Html.RenderPartial("_FriendsList", friends); }

Html.RenderPartial("_FriendsList", (IEnumerable<Demo.Models.Friends>)(Model.Friends)); n'a pas fonctionné!

2
Muckman