asp.net MVC частичное действие контроллера представления

1 ответ

Хотя вы можете иметь действие, возвращающее частичное представление, вам не нужно действие для визуализации частичного представления. RenderPartial берет частичное представление и отображает его, используя данную модель и данные представления, если они предоставлены, в текущее (родительское) представление.

Вам может потребоваться действие, которое возвращает частичное представление, если вы используете AJAX для загрузки / перезагрузки части страницы. В этом случае возвращение полного просмотра нежелательно, поскольку вы хотите перезагрузить только часть страницы. В этом случае вы можете сделать так, чтобы действие просто возвращало частичный вид, соответствующий этому разделу страницы.

Стандартный механизм

Использование частичного представления в обычном представлении (никаких действий не требуется)

...some html...
<% Html.RenderPartial( "Partial", Model.PartialModel ); %>
...more html..

Механизм Ajax

Перезагрузка части страницы через AJAX (обратите внимание, что частичное отображение отображается в процессе начальной загрузки страницы)

...some html...
<div id="partial">
<% Html.RenderPartial( "Partial", Model.PartialModel ); %>
</div>
...more html...

<script type="text/javascript">
   $(function() {
       $('#someButton').click( function() {
           $.ajax({
              url: '/controller/action',
              data: ...some data for action...,
              dataType: 'html',
              success: function(data) {
                 $('#partial').html(data);
              },
              ...
           });
       });
   });
</script>

Контроллер для AJAX

public ActionResult Action(...)
{
     var model = ...

     ...

     if (Request.IsAjaxRequest())
     {
          return PartialView( "Partial", model.PartialModel );
     }
     else
     {
          return View( model );
     }
}
134
ответ дан 24 November 2019 в 11:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: