Что такое дочернее действие MVC?

Я читал о дочерних действиях в MVC (фундаментальная книга), но я действительно не знаю, что это такое?

Может кто-нибудь объяснить эти методы?

Ответ 1

Фил Хаак хорошо объясняет это в этом сообщении в блоге. В основном дочернее действие - это действие контроллера, которое вы могли бы вызвать из представления с помощью помощника Html.Action:

@Html.Action("SomeActionName", "SomeController")

Это действие затем выполнит и отобразит его вывод в указанном месте в представлении. Разница с Partial заключается в том, что частичная только включает указанную разметку, нет другого действия, выполняющего основное действие.

Таким образом, у вас есть основное действие, которое получило запрос и отобразило представление, но из этого представления вы можете выполнить несколько дочерних действий, которые пройдут через их независимый жизненный цикл MVC и, в конечном итоге, выведут результат. И все это произойдет в контексте одного HTTP-запроса.

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

Ответ 2

Дочернее действие - это действие, которое вызывается с помощью html.renderaction или html.action helper изнутри представления.

Ответ 3

Дочернее действие - это метод действия, который вызывается в представлении через @Html.Action().

Пример У меня есть действие на моем контроллере.

public DateTime Time(DateTime time)
{
    return time;
}

Чтобы вызвать это действие из Вид, я буду использовать:

@Html.Action("Time", new { time = DateTime.Now }) 

Ответ 4

Очки, которые следует отметить:

  1. Любой метод действия, который украшен атрибутом [ChildActionOnly], является дочерним методом действия.
  2. Дочерние методы действий не будут отвечать на запросы URL. Если будет предпринята попытка, будет сгенерирована ошибка времени выполнения: "Дочернее действие доступно только по дочернему запросу.

  3. Дочерние методы действия могут быть вызваны путем создания дочернего запроса из представления с помощью помощников HTML "Action()" и "RenderAction()".

  4. Метод действия не должен иметь атрибут [ChildActionOnly], который будет использоваться в качестве дочернего действия, но используйте этот атрибут, чтобы предотвратить, если вы хотите, чтобы метод действия не вызывался в результате запроса пользователя.

  5. Дочерние действия обычно связаны с частичными представлениями, хотя это не является обязательным.

  6. Дочерние методы действия отличаются от методов NonAction тем, что методы NonAction нельзя вызывать с помощью помощников Action() или RenderAction().

  7. Используя дочерние методы действий, можно кэшировать части представления. Это главное преимущество методов дочерних действий.