如何到达Header

时间:2010-02-22 02:47:14

标签: asp.net-mvc

我正在尝试传递标题对象:

<%=FileUtil.AddStylesheetToHeader(Header, "UsedItems.css") %>

在我的母版页面中,我有一个<head runat="server">。我的aspx页面肯定在我的基于MVC的.aspx顶部的页面指令中引用了我的MasterPageFile。

我还有一个import语句,FileUtil类所在的命名空间:

<%@ Import Namespace="xxxx.Web.Utilities" %>

在标准ASP.NET中,您可以使用this.Header引用标头,但在MVC中我无法执行此操作...或者我缺少某种Imports或其他内容。

由于某些原因,虽然在运行时,通过调用AddStylesheetToHeader,我收到以下错误:

'System.IO.TextWriter.Write(char)'的最佳重载方法匹配有一些无效的参数。

我不确定为什么它会查看.NET类型,因为我知道当我在编译时将鼠标悬停在FileUtil上时,它肯定会引用xxxx.Web.Utilities.FileUtil。

在那个方法中我使用HtmlLink styleSheet = new HtmlLink();我可能无法使用它,因为它是一个ASP.NET Web控件?这是方法:

public static void AddStylesheetToHeader(HtmlHead header, string cssFilename)
{
    HtmlLink styleSheet = new HtmlLink();
    styleSheet.Href = "content/css/" + cssFilename;
    styleSheet.Attributes.Add("rel", "stylesheet");
    styleSheet.Attributes.Add("type", "text/css");

    header.Controls.Add(styleSheet);
}

我认为我不能使用源自System.Web.Controls的conrols,因为这是一个ASP.NET应用程序?如果是这样,我如何将控件添加到标题控件集合?我是否需要在MVC中以不同的方式做到这一点?

3 个答案:

答案 0 :(得分:1)

可能有一种方法可以按照您尝试的方式执行此操作,但在ASP.NET MVC中更常见的是在<head>中创建内容占位符而不是以编程方式访问它。例如,您的主视图可能如下所示:

<html>
  <head>
    <asp:ContentPlaceHolder ID="HeadContent" runat="server" />
  </head>
</html>

您的观点可能如下所示:

<asp:Content runat="server" ContentPlaceHolderID="HeadContent">
  <link href="/content/css/UsedItems.css" rel="Stylesheet" type="text/css" />
</asp:Content>

答案 1 :(得分:0)

你试过这个.Request.Header吗?

答案 2 :(得分:0)

您可以使用JavaScript将内容动态添加到HEAD部分,如下面的代码所示:

<script language="javascript" type="text/javascript">

     $(document).ready(function() {


         $("head").append("<link href='Content/Site.css' rel='stylesheet' type='text/css' />");

      });   

 </script>