Вопрос

Я очень новичок в разработке веб-приложений, и я подумал, что начну с недавних технологий, и поэтому я пытаюсь изучить ASP.NET As-Well, как и MVC Framework. Это, вероятно, очень простой вопрос для вас, профессионалы MVC.

Мой вопрос в том, что частичное представление имеет связанное действие, и если да, то это действие вызывается всякий раз, когда использует нормальная страница RenderPartial() При частичном взгляде?

Это было полезно?

Решение

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

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

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

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

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

Аякс механизм

Перезагрузка части страницы через 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 );
     }
}

Другие советы

Принятый ответ полностью правильный, но я хочу добавить, что вы можете загрузить частичный вид, используя нагрузку JQUERY. Необходимо меньше конфигурации, если вы не хотите рассматривать параллелизм.

$("#Your-Container").load("/controller/action/id");

Ответ - нет. Но иногда вам нужно какое -то действие контроллера за частичным взглядом. Затем вы можете создать ActionMethod, чтобы вернуть частичный вид. Это действие может быть вызвано в другой точке:

@Html.Action("StockWarningsPartial", "Stores")

ActionMethod может выглядеть как:

public ActionResult StockWarningsPartial()
{
      ....              
      return View("StockWarningsPartial", warnings);

}

и представление «stockwarningspartial.cshtml» начинается с:

@{
    Layout = null;
}

чтобы сделать его снова, чтобы он не представил окружающую планировку.

Я смог достичь чего -то подобного с этой логикой.

В пределах .cshtml

@Html.Action("ActionMethodName", "ControllerName");

Внутри контроллера

[Route("some-action")]
public ActionResult ActionMethodName()
{
    var someModel = new SomeModel();
    ...
    return PartialView("SomeView.cshtml", someModel);
}

Вот и все.

Если вам нужно перенести значения из .cshtml в метод действия, то это возможно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top