2010-02-22 45 views
0

得到我想在這裏通過頭對象:如何在頁眉

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

在我的母版頁我有一個<head runat="server">。而且我的aspx頁面在我的基於.aspx的MVC頂部的頁面指令中肯定有一個對我的MasterPageFile的引用。

我也有一個import語句的FileUtil類位於命名空間:

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

在標準的ASP.NET,你可以參考的標頭this.Header但在MVC我不能做這...或者我缺少某種進口或某物。

由於某種原因,但在運行時,與調用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

這個問題是特定於ASP.NET MVC。我拿出了ASP.NET標籤。 – PositiveGuy 2010-02-22 03:11:17

+0

看來你可能不得不去JavaScript的路線添加CSS鏈接! – azamsharp 2010-02-22 03:13:01

+0

我的猜測是,當它打到我的代碼時,頁面已經顯示出頭部,我無法返回並添加到它。當它是傳統的ASP.NET時,我將它添加到page_load中,然後再考慮將頁眉添加到頁面中。所以不知道如何用MVC做到這一點,因爲沒有代碼隱藏。我知道我可以在JavaScript中做到這一點,但想看看我能否以某種方式掛鉤到頁面的呈現中......可能不是? – PositiveGuy 2010-02-23 02:03:53

回答

0

你有沒有試過這個.Request.Header?

+0

System.Web.HttpRequest'不包含'Header'的定義 – PositiveGuy 2010-02-22 02:57:46

+0

我認爲只是傳遞Header或this.Header是好的。我想我只是沒有正確的導入或者做錯了什麼......一些基本的東西我還看不到。 – PositiveGuy 2010-02-22 02:58:16

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> 
+0

啊,gotcha。這就說得通了。人肯定會很好,雖然做我的方式使用像我在標準的ASP.NET – PositiveGuy 2010-02-23 01:34:50

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> 
+0

似乎沒有工作的方式。我把它放在我的.aspx頁面的一個內容佔位符中。 – PositiveGuy 2010-02-23 02:06:49

+0

當您查看源代碼時,您將看不到添加到頭部的鏈接。但是,如果您使用FireBug來查看DOM,您會注意到該鏈接已添加到頭部。然後您可以使用Site.css。 – azamsharp 2010-02-23 04:11:11