Html.RenderPartial выдает странную ошибку перегрузки?

103

Я создал тестовую частичную страницу с именем _Test.cshtml и поместил ее в тот же каталог, что и мое представление, которое будет ее вызывать, вот оно:

<div>hi</div>

И в вызывающем представлении cshtml я просто вставил:

@Html.RenderPartial("_Test")

Что дает мне ошибку:

CS1502: лучшее совпадение перегруженного метода для 'System.Web.WebPages.WebPageExecutingBase.Write (System.Web.WebPages.HelperResult)' имеет некоторые недопустимые аргументы

Я также пробовал полный путь с тем же результатом.

Я очень сбит с толку, почему это так, я полагаю, мне не хватает чего-то простого?

наспински
источник

Ответы:

190

Вы получаете эту ошибку, потому что Html.RenderXXXпомощники возвращают void - им нечего возвращать, потому что они пишут данные напрямую * в ответ. Вы должны использовать их так:

@{ Html.RenderPartial("_Test"); }

Существует также помощник Html.Partial, который будет работать с вашим синтаксисом, но я бы не рекомендовал использовать его, если вам не нужно, из-за производительности (сначала он объединяет данное частичное представление в строку, а затем родительское представление помещает его в ответ * ).

* это не совсем так, они фактически отображаются в ViewContext.Writer, и как только вся страница отображается и скомпонована, все это отправляется в ответ

Лукаш Новотны
источник