Использование Html.RenderPartial () в файлах ascx - PullRequest
23 голосов
/ 29 сентября 2010

Я пытаюсь использовать 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?

Ответы [ 3 ]

40 голосов
/ 29 сентября 2010

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

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

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

8 голосов
/ 05 июня 2012

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

@Model MyViewModel

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

@model MyViewModel

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

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

2 голосов
/ 29 ноября 2011

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

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

...