我是一名有兴趣学习MVC的网络表单程序员。我创建了一整套Web控件,可以直接访问页眉并在其中编写内容。例如,如果我有一个控件来呈现带有datepicker功能的文本框,它可以访问页眉,以便自动添加指向它所需的JavaScript和CSS文件的链接。我喜欢这个,因为我懒得思考我需要的链接文件。一个懒惰的程序员是一个优秀的程序员,对吗?
我的问题是,有没有办法在MVC中执行此操作?也就是说,要创建一个自定义的HtmlHelper(例如),以及在页面上呈现控件标记,可以将所需的脚本和链接标记呈现到页眉中吗?
答案 0 :(得分:4)
使用_Layout.cshtml
(基本上是母版页)中的MVC3,您可以使用@Render.Partial("Header", required: false)
然后您可以在视图中使用命名部分。
@section Header {
@{ Html.MyHelper.GetResources(); }
}
@Html.MyHelper.DoSomething()
使用required: false
这意味着如果视图没有Header的命名部分,MVC3将不会出错。如果您想要求所有页面都有一个命名部分(例如面包crums),您可以使用required: true
(这是默认设置),如果视图没有@section Header
则会出错。< / p>
答案 1 :(得分:0)
在Web表单中,您有自定义服务器控件,它可以获取页面对象并使用它吗? Asp.net mvc没有服务器控件和Page对象。
至于我,以这种方式链接资源是不错的主意 - 在客户端优化最佳实践中 - 向服务器打开最少数量的请求以获取资源。您可以下载YSlow以改善您网站的性能。
但是如果你想要你可以创建扩展方法并在视图中使用它或创建actionfilterattribute,它设置了一些url字符串;
答案 2 :(得分:0)
是的, - Telerik在ScriptRegistrar
和Stylesheet
注册商处做得很好。一个很好的起点是web asset documentation
答案 3 :(得分:-1)
我在互联网上发现这个资源部分与您的问题有关,可能是这方面可以做的最多。
该解决方案并未真正呈现在HEAD
元素中,但它有助于在部分视图中仅添加一次脚本并在主视图中呈现它们。因此,您不必担心部分视图脚本。他们会照顾好自己(更多的是封装)
A Simple ScriptManager for ASP.NET MVC
但是我认为通过在字典中保存引用(类似于上层链接的方式)可以实现,然后拥有自己的视图引擎,在最终呈现脚本引用中呈现头部。
ViewPage
课程方法您还可以为视图和部分视图编写您赢过的类。这样,您可以更改视图呈现的方式,再次使用某种字典。您可以通过Html
帮助程序扩展方法填充该字典,或者创建具有此类功能的自定义ViewUserControl
类。
在这三个中,我认为最后一个是最简单的,可以写在HEAD
元素内。您还可以在其中提供可以进行资源组合的功能。