Нет разницы между обработкой родительского или дочернего действия
Любое действие следует тому же определению маршрута, которое вы задали в Application_Start
.Это означает как родительские действия, так и дочерние.Если вы указали конкретные маршруты для всех действий в вашем приложении, то вы также должны предоставить определения маршрутов для ваших дочерних действий.
Избегайте обработки маршрута, преобразовав в Html.RenderPartial()
Если вы, конечно, можете ... Дочерние действия проходят ту же обработку MVC, что и родительские действия.Это, конечно, отличается, если вы можете изменить Html.RenderAction()
на Html.RenderPartial()
.Они не проходят ту же обработку, следовательно, намного быстрее.Используйте Html.RenderAction()
только в том случае, если вы не можете сделать это каким-либо другим способом или сделать это другим способом, что будет означать хакерство (повышенная сложность типа модели представления и т. Д.).
Фактический Html.RenderAction()
Отрывок кода
Если вы посмотрите на код Html.RenderAction()
, он вызывает контекстную обработку, чтобы выполнить, как если бы запрос был отправлен на сервер:
// other code before this
RouteData routeData = CreateRouteData(data.Route, routeValues, data.DataTokens, htmlHelper.ViewContext);
HttpContextBase httpContext = htmlHelper.ViewContext.HttpContext;
RequestContext context = new RequestContext(httpContext, routeData);
ChildActionMvcHandler httpHandler = new ChildActionMvcHandler(context);
httpContext.Server.Execute(HttpHandlerUtil.WrapForServerExecute(httpHandler), textWriter, true);
Мы можем убедиться, что он использует обработчик ChildActionMvcHandler
который наследуется от MvcHandler
, но в принципе не отличается от него с точки зрения исполнения, поскольку не имеет каких-либо новых или измененных функциональных возможностей, связанных с обработкой.Таким образом, он выполняет код MvcHandler в основном.
Outcome?
Дочерние действия выполняются как родительские действия , используя те же определения маршрутизации, сопоставление действий контроллера (селекторы метода действия), фильтрыи т.д.