我希望能够在ViewData或ViewBag中注册脚本块,然后在我的布局页面上将它们卸载到正确的位置。
我尝试在@function {}
中写一个_Layout
,但这不能从我的观点中调用。
那么如何编写一个允许我做类似于
的类@Something.registerscript("myscript.js")
然后在布局页面
@Something.RenderScripts()
我在这里看到了使用单例模式的实现......
Add CSS or JavaScript files to layout head from views or partial views
但我担心这会导致问题,因为这应该是动态的而不是静态的!
答案 0 :(得分:0)
这是一个通用的解决方案,还是只想在视图中包含脚本文件?对于后者,您始终可以创建一个名为“Head”的部分或在<head>
- 元素中创建的任何部分。
例如:
_layout.cshtml
<html>
<head>
@RenderSection("Head", false)
</head>
...
</html>
View.cshtml
@section Head
{
<script type="text/javascript">...</script>
}
我不建议将此作为答案,因为您可能希望实际做更多的事情(据我所知,这不适用于EditorTemplates等)。但是如果你想要复杂,这很容易。
答案 1 :(得分:0)
为什么要使用ViewBag呢?如果要创建具有请求范围范围的内容,请使用HttpContext.Current.Items - 在您的情况下实现一个存储辅助方法,以及一个“渲染所有存储”方法。
答案 2 :(得分:0)
Viewbag或它的近亲视图数据我认为这是最好的集合,因为你的上下文似乎在视图中。你在哪里注册脚本&amp;你会在哪里呈现它?
我认为,您可以编写辅助扩展来包含寄存器和放大器。渲染事物的一面。我相信辅助方法可以访问viewdata。您将从您使用的实际商店中获得额外的抽象奖励,因为您只能从这些帮助方法中引用它。