Использование 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?


person takayoshi    schedule 29.09.2010    source источник


Ответы (3)


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

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

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

person GvS    schedule 29.09.2010
comment
@Rob, если вы когда-нибудь переключитесь на Razor, рассмотрите возможность использования этого: stackoverflow.com/questions/4047543/ - person juan; 18.03.2011

В случае, если кто-то еще сделал ту же ошибку, что и я:

@Model MyViewModel

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

@model MyViewModel

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

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

person StuartQ    schedule 05.06.2012
comment
Действительно немного гениально. Это действительно помогло мне сэкономить время. - person udog; 12.11.2014

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

Html.RenderPartial("_FriendsList", (IEnumerable<Demo.Models.Friends>)(Model.Friends)); не получилось!

person Muckman    schedule 29.11.2011