4

我是一名有兴趣了解 MVC 的 Web 表单程序员。我创建了一整套 Web 控件,可以直接访问页眉并在其中写入内容。例如,如果我有一个控件来呈现具有日期选择器功能的文本框,它可以访问页眉以自动添加指向所需的 JavaScript 和 CSS 文件的链接。我喜欢这个,因为我懒得去想我需要什么链接文件。一个懒惰的程序员就是一个好程序员,对吧?

我的问题是,有没有办法在 MVC 中做到这一点?也就是说,要创建一个自定义 HtmlHelper(例如),它除了在页面上呈现控件标记外,还可以将它需要的脚本和链接标签呈现到页眉中?

4

4 回答 4

4

_Layout.cshtml在您的(基本上是母版页)中使用MVC3,您可以使用@Render.Partial("Header", required: false)

然后,您可以在视图中使用命名部分。

@section Header {
    @{ Html.MyHelper.GetResources(); }
}

@Html.MyHelper.DoSomething()

required: false意味着如果视图没有标题的命名部分,MVC3 将不会出错。如果您想要求所有页面都有一个命名部分(例如面包屑),您可以使用required: true(这是默认设置),如果视图没有@section Header它会出错。

于 2011-03-18T12:39:03.820 回答
0

在 Web 表单中,您有自定义服务器控件,它们获取页面对象并使用它?Asp.net mvc 没有服务器控件和 Page 对象。

对我来说,以这种方式链接资源是个坏主意——在客户端优化最佳实践中——向服务器打开最少数量的资源请求。您可以下载 YSlow 以提高您网站的性能。

但是,如果您愿意,您可以创建扩展方法并在视图中使用它或创建 actionfilterattribute,它设置一些 url 字符串;

于 2011-03-18T12:45:13.473 回答
0

ScriptRegistrar是的,Telerik 与它的Stylesheet注册商一起在这方面做得很好。一个好的起点是网络资产文档

于 2011-03-18T12:52:04.870 回答
-1

一种脚本管理器

我在互联网上找到了与您的问题部分相关的资源,并且可能是在这方面可以做的最多的资源。

该解决方案并没有真正呈现在HEAD元素中,但它有助于从局部视图中仅添加一次脚本并在主视图中呈现它们。所以你不必担心你的局部视图脚本。他们会照顾好自己(更封装的是)

用于 ASP.NET MVC 的简单 ScriptManager

自定义视图引擎方法

但除此之外,我认为可以通过将引用保存在字典中(类似于上部链接的方式),然后拥有自己的视图引擎,在最终渲染脚本引用中渲染头部。

自定义ViewPage类方法

您也可以为视图和部分视图编写您赢得的类。通过这种方式,您可以更改再次使用某种字典的视图呈现方式。您可以通过辅助扩展方法填充该字典,Html或者创建一个ViewUserControl具有这种功能的自定义类。

在这三个中,我认为最后一个是最简单的,可以写在HEAD元素内部。您还可以在其中提供可以进行资源组合的功能。

于 2011-03-18T13:02:03.490 回答