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

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

<div>hi</div>

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

@Html.RenderPartial("_Test")

Который дает мне ошибку:

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

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

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

Ответ 1

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

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

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

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