【发布时间】:2011-11-08 08:24:20
【问题描述】:
我想在子动作中生成 HTML 头部;而页面有许多其他子操作。 html head 部分取决于其他操作来确定应包含哪些 js/css 文件。不同的子动作可以共享同一个js/css文件;并且不同的页面有不同的css/js组合,所以这样做是有原因的。这是我的示例代码:
Layout.cshtml:
<html>
<head>
@RenderZone("header")
</head>
<body>
@RenderZone("zone1")
@RenderZone("zone2")
@RenderZone("zone3")
</html>
每个区域都有 1 个或多个子操作。
RenderZone 实际上也是一个动作。数据模式:
Model = GetAllChildActions(zoneName)
RenderZone 视图:
foreach(var m in Model)
@html.action(controller = m.controller, action = m.action)
因为 Header 区域位于顶部,所以它总是先执行,然后它无法从其他子操作中获取数据。我已经尝试过过滤器(onActionExecuted;onActionResultExcuted 等等),但它们都不起作用。在呈现所有子操作后,我真的需要执行标题操作。我不想在页面底部生成 css。我可以,但我不想使用 javascript 来注入 js/css 文件;或编写一个 http 模块来“手动”更改输出 html。在网络表单中处理它非常容易。我相信在 MVC 中也有办法做到这一点。任何帮助将不胜感激!
【问题讨论】:
-
简单的
OrderBy()不可能吗? -
感谢您的回答!但是页面中的操作(子操作)没有可用的排序。与我们可以通过查找控件 ID 来加载用户控件的 Webform 不同,MVC razor 不提供检查页面子级的方法。
标签: c# asp.net-mvc-3 razor action