Использование Html.RenderPartial() в файлах ascx

Я пытаюсь использовать Html.RenderPartial в файле acsx и я получаю сообщение об ошибке:

Сообщение об ошибке компилятора: CS1973: 'System.Web.Mvc.HtmlHelper' не имеет применимого метода с именем "RenderPartial", но, похоже, имеет метод расширения с помощью этого имени. Методы расширения не могут быть динамически посланный. Подумайте о том, как использовать динамические аргументы или вызвать метод расширения без синтаксиса метода расширения

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

Однако я импортирую необходимые пространства имен, поэтому это не будет ошибкой в ​​

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

Существуют ли какие-либо методы использования Html.RenderPartial в файле ascx?

Ответ 1

Компилятор не может выбрать правильный метод, потому что ваша модель dynamic. Измените вызов на:

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

Или любой другой идентификатор типа данных.

Ответ 2

Если кто-то другой совершил ту же ошибку, я сделал:

@Model MyViewModel

Это будет рассматривать вашу модель как динамическую

@Model MyViewModel

Это правильно строго типизированное представление. Обратите внимание на отсутствие капитализации!

Обратите внимание, что это Razor, в отличие от исходного вопроса.

Ответ 3

Единственный способ, которым я мог пройти, например. IEnumerable должен был создать локальную переменную и передать ее. Например @{ IEnumerable<Demo.Models.Friend> friends = Model.Friends; Html.RenderPartial("_FriendsList", friends); }

Html.RenderPartial("_FriendsList", (IEnumerable<Demo.Models.Friends>)(Model.Friends)); не работает!