Синтаксис Html.RenderPartial () із Razor


95

Це працює, оскільки повертає результат часткового візуалізації подання у рядку:

@Html.Partial("Path/to/my/partial/view")

Але я вважаю за краще використовувати, RenderPartialі, здається, мені потрібно написати:

@{Html.RenderPartial("Path/to/my/partial/view");}

замість:

@Html.RenderPartial("Path/to/my/partial/view");

Щоб це працювало. Повідомлення про помилку:

 Compiler Error Message: CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments

Якщо є якийсь кращий спосіб замість відкриття блоку коду @{...}лише для одного виклику методу?


Яка помилка ви отримуєте, коли намагаєтесь використати@Html.RenderPartial()
Ніл Найт

Я додав повідомлення до свого допису. Я розумію, чому він показує, що помилка @ Html.RenderPartial () аналізується приблизно так само, як <%?: @ Html.RenderPartial ()?>, Що неправильно, а не як <? Html.RenderPartial (); ?>, але я шукаю обхідного шляху.
artvolk

Пов’язане: Html.Partial проти Html.RenderPartial та Html.Action проти Html.RenderAction . До речі, чому ви вважаєте за краще використовувати RenderPartial?
Паоло Моретті

Відповіді:


142
  • RenderPartial()є методом void, який записує в потік відповіді. Метод void, в C #, потребує a, ;отже, повинен бути оточений { }.

  • Partial()є методом, який повертає MvcHtmlString . У Razor ви можете викликати властивість або метод, який повертає такий рядок із лише @префіксом, щоб відрізнити його від звичайного HTML, який ви маєте на сторінці.


1
Чому ви віддаєте перевагу використанню Html.RenderPartial замість Html.Partial? Якщо ви з якихось причин хочете / вам потрібно використовувати Html.RenderPartial, обхідного шляху немає - це синтаксис.
Ofer Zelig

5
Я використовую його, тому що він повинен бути більш ефективним (оскільки він не повертає величезний рядок).
artvolk

45

Html.RenderPartial () є методом void - ви можете перевірити, чи метод є методом void, навівши курсор миші на виклик RenderPartial у вашому коді, і ви побачите текст (розширення) void HtmlHelper.RenderPartial ...

Методи void вимагають крапки з комою в кінці виклику коду.

У механізмі перегляду веб-форм ви б уклали свій виклик Html.RenderPartial () в межах укусів бджіл <%%>

подобається так

<% Html.RenderPartial("Path/to/my/partial/view"); %>

коли ви використовуєте механізм подання Razor, еквівалент

@{Html.RenderPartial("Path/to/my/partial/view");}

5
"укуси бджіл" - це перше (для мене?)
JoeBrockhaus

9
@Html.Partial("NameOfPartialView")

Я хотів би використати Html.RenderPartial(), ось чому я поставив це питання. Подробиці: "З точки зору продуктивності стверджується, що рендерінг безпосередньо у вихідний потік є кращим (саме тому для початку вони пішли без пустого RenderPartial)". звідси stackoverflow.com/a/2729851/118810
artvolk

0

Якщо вам надано цей формат, він приймає як посилання на іншу сторінку або іншу посилання. Частковий вигляд, який в основному використовується для обробки HTML-файлів з одного місця в інше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.