我正在使用这个基于dom的路由,以便在每个页面上启动特定的javascript http://viget.com/inspire/extending-paul-irishs-comprehensive-dom-ready-execution
因此,每次页面加载时都需要在标记中写入唯一的数据属性
e.g。
<body data-controller="Home" data-action="Index">
将这种逻辑用于剃刀视图的最佳位置是什么?
body标签位于我的母版页(_layout.cshtml)文件中。它需要在每个页面上动态呈现
考虑在基本控制器中覆盖OnActionExecuting并将当前控制器和操作名称注入ViewBag。然后在我的_layout.cshtml中引用ViewBag属性
这是否有意义或是否有更适合此功能的地方?
答案 0 :(得分:1)
您不需要通过ViewBag
传递数据(尽管它可以工作),而不是您可以通过任何视图中的ViewContext
属性访问当前控制器和操作(即使在布局中) )
<body
data-controller="@(ViewContext.RequestContext.RouteData.Values["controller"])"
data-action="@(ViewContext.RequestContext.RouteData.Values["action"])">
要在ViewBag
OnActionExecuting
上设置其他“全局属性”(可能与基类结合使用或使用自定义过滤器),这是正确的位置。