RenderPartial из другой папки в RAZOR
Я пытаюсь преобразовать мои страницы aspx в cshtml и проблема с рендерингом частичных страниц из другой папки.
Что я использовал:
<% Html.RenderPartial("~/Views/Inquiry/InquiryList.ascx", Model.InquiryList.OrderBy("InquiryId", MvcContrib.Sorting.SortDirection.Descending));%>
Я бы подумал, что эквивалент будет:
@Html.RenderPartial("~/Views/Inquiry/_InquiryList.cshtml", Model.InquiryList.OrderBy("InquiryId", MvcContrib.Sorting.SortDirection.Descending))
Это, очевидно, не работает, я получаю следующую ошибку.
CS1973: 'System.Web.Mvc.HtmlHelper' не имеет применимого метода, названного "Частичный", но, похоже, имеет метод расширения с помощью этого имени. Методы расширения не могут быть динамически отправляется. Рассматривать литье динамических аргументов или вызов метода расширения без синтаксис метода расширения.
Как я могу достичь этого с помощью механизма просмотра Razor?
Ответы
Ответ 1
RenderPartial не возвращает строку или значение IHtmlString. Но делает ли рендеринг, вызывая Write в ответе.
Вы можете использовать расширение Partial, это возвращает MvcHtmlString
@Html.Partial( ....
или
@{ Html.RenderPartial(....); }
Если вы действительно хотите RenderPartial
Ответ 2
Компилятор не может выбрать правильный метод, потому что ваша модель динамическая. Измените вызов на:
@Html.RenderPartial("~/Views/Inquiry/_InquiryList.cshtml", (List<string>)Model.InquiryList)
Или для любого типа данных. Список запросов.
Ответ 3
Не забудьте включить свою строго типизированную директиву @model
в свой новый вид Razor. Это простой шаг, который можно пропустить при преобразовании представлений из .aspx в .cshtml. Если вы забудете, что "System.Web.Mvc.HtmlHelper" не имеет применимого метода с именем "Partial", сообщение об ошибке может появиться.