Как изменить последовательность дочерних действий в MVC

Я хочу сгенерировать раздел заголовка HTML в дочернем действии; в то время как на странице есть много других дочерних действий. Раздел заголовка html зависит от других действий, определяющих, какие файлы js / css следует включить. Различные дочерние действия могут использовать один и тот же файл js / css; и разные страницы имеют разную комбинацию css / js, поэтому для этого есть причина. Вот мой пример кода:

Layout.cshtml:
<html>
<head>
@RenderZone("header")
</head>
<body>
@RenderZone("zone1")
@RenderZone("zone2")
@RenderZone("zone3")
</html>

Каждая зона имеет одно или несколько дочерних действий.

RenderZone - это тоже действие. Режим данных:

Model = GetAllChildActions(zoneName)

Вид RenderZone:

foreach(var m in Model)
    @html.action(controller = m.controller, action = m.action)

Поскольку зона заголовка является верхней, поэтому она всегда выполняется первой, тогда она не может получить данные от других дочерних действий. Я пробовал фильтры (onActionExecuted; onActionResultExcuted и т. Д.), Но ни один из них не работал. Мне действительно нужно выполнить действие заголовка после того, как все дочерние действия будут отрисованы. Я не хочу создавать CSS внизу страницы. Я мог бы, но не хочу использовать javascript для вставки файлов js / css; или напишите модуль http, чтобы «вручную» изменить выходной html. С этим очень легко справиться в веб-форме. Я считаю, что есть способ сделать это и в MVC.Любая помощь будет оценена!

5
задан Paul Tyng 8 November 2011 в 00:24
поделиться