我正在尝试传递标题对象:
<%=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中以不同的方式做到这一点?
答案 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>