В ASP.NET MVC какая разница между:
Html.Partial
а такжеHtml.RenderPartial
Html.Action
а такжеHtml.RenderAction
.net
asp.net-mvc
partial-views
renderpartial
renderaction
Гути Фаранги
источник
источник
Ответы:
Html.Partial
возвращает строкуHtml.RenderPartial
звонкиWrite
внутри и обратноvoid
.Основное использование:
В приведенном выше фрагменте оба вызова дают одинаковый результат.
В то время как один может хранить выход
Html.Partial
в переменной или вернуть его из метода, один не может сделать это сHtml.RenderPartial
.Результат будет записан в
Response
поток во время выполнения / оценки.Это также относится
Html.Action
и кHtml.RenderAction
.источник
Html.Partial()
был создан, чтобы иметь более свободный синтаксис с Razor. Как сказал @Vlad,Html.RenderPartial()
это более эффективно.Представьте, что @ Html.Partial - это HTML-код, скопированный на родительскую страницу. Думайте о @ Html.RenderPartial как о пользовательском элементе управления .ascx, встроенном в родительскую страницу. Пользовательский элемент управления .ascx имеет гораздо больше накладных расходов.
'@ Html.Partial' возвращает строку в кодировке html, которая создается встроенным вместе с родителем. Доступ к модели родителя.
'@ Html.RenderPartial' возвращает эквивалент пользовательского элемента управления .ascx. Он получает свою собственную копию ViewDataDictionary страницы, и изменения, сделанные в ViewData RenderPartial, не влияют на ViewData родителя.
Используя отражение, мы находим:
источник
Partial
рендеринг в буфер не означает, что он рендерится асинхронно - совсем наоборот - я не могу понять, как можно утверждать, чтоRenderPartial
он «более ресурсоемкий».Вот что я нашел:
Используйте RenderAction, когда у вас нет модели для отправки в представление, и у вас есть много html-файлов для возврата, которые не нужно хранить в переменной.
Используйте действие, если у вас нет модели для отправки в представление, и у вас есть небольшой текст для возврата, который необходимо сохранить в переменной.
Используйте RenderPartial, когда у вас есть модель для отправки в представление, и будет много HTML, который не нужно хранить в переменной.
Используйте Partial, если у вас есть модель для отправки в представление, и там будет немного текста, который нужно сохранить в переменной.
RenderAction и RenderPartial работают быстрее.
источник
Разница в том, что первый возвращает один,
MvcHtmlString
а второй (Render..
) выводит прямо в ответ.источник
По моему мнению,
@Html.RenderPartial()
имеет более быстрое выполнение, чем@Html.Partial()
из-за Html.RenderPartial дает быстрый ответ на вывод.Потому что когда я использую
@Html.Partial()
, мой сайт загружается больше времени по сравнению с@Html.RenderPartial()
источник
@Html.Partial
и@Html.RenderPartial
используются, когда ваша модель частичного представления соответствует родительской модели, нам не нужно создавать какой-либо метод действия для вызова этого.@Html.Action
и@Html.RenderAction
используются, когда ваша модель частичного представления не зависит от родительской модели, в основном она используется, когда вы хотите отобразить любое содержимое типа виджета на странице. Вы должны создать метод действия, который возвращает частичный результат просмотра при вызове метода из представления.источник
Подробнее о вопросе:
«NerdDinner» из Профессиональной ASP.NET MVC 1.0
источник
Возвращаемый тип
Html.RenderAction
являетсяvoid
это означает , что непосредственно оказывает ответы в View , где тип возвратаHtml.Action
являетсяMvcHtmlString
Вы можете поймать его вынести представление в контроллер и изменить его с помощью следующего методаЭто вернет HTML-строку представления.
Это также относится к
Html.Partial
иHtml.RenderPartial
источник
Partial или RenderPartial: нет необходимости создавать метод действия. используйте, когда данные для отображения в частичном представлении уже присутствуют в модели текущей страницы.
Action или RenderAction: требуется дочерний метод действия. используйте, когда данные для отображения в представлении имеют независимую модель.
источник
Отличия:
Возвращаемый тип
RenderPartial
isvoid
, где asPartial
возвращаетMvcHtmlString
Синтаксис для вызова
Partial()
иRenderPartial()
методов в представлениях RazorСинтаксис для вызова
Partial()
иRenderPartial()
методов в представлениях веб-формыНиже приведены два распространенных вопроса об интервью,
Partial()
иRenderPartial()
когда вы будете использовать ихPartial()
сноваRenderPartial()
и наоборот?Основное отличие состоит в том, что
RenderPartial()
возвращается значение void, и выходные данные будут записываться непосредственно в выходной поток, где приPartial()
возврате из метода онMvcHtmlString
может быть присвоен переменной и манипулировать ею при необходимости. Таким образом, когда есть необходимость назначить вывод переменной для манипулирования ею, тогда используйте Partial (), иначе используйте RenderPartial ().Какой из них лучше для производительности?
С точки зрения производительности лучше рендеринг непосредственно в выходной поток.
RenderPartial()
делает то же самое и лучше для производительностиPartial()
.источник
Html.Partial
: возвращаетсяMvcHtmlString
и медленноHtml.RenderPartial
: напрямую выводить / записывать в выходной поток и возвращать,void
и это очень быстро по сравнению сHtml.Partial
источник
Для «частичного» я всегда использую его следующим образом:
Если есть что-то, что вам нужно включить в страницу, которую вам нужно пройти через контроллер (как если бы вы использовали вызов Ajax), тогда используйте «Html.RenderPartial».
Если у вас есть «статическое» включение, которое не связано с контроллером как таковое, а просто находится в папке «shared», например, используйте «HTML.partial»
источник
@Html.Partial
возвращает представление в HTML-кодированной строке и использовать тот жеTextWriter
объект представления.@Html.RenderPartial
этот метод возвратаvoid
.@Html.RenderPartial
быстрее чем@Html.Partial
Синтаксис для
PartialView
:источник