2010-06-07 79 views
0

在ASP.NET MVC中,有這些稱爲視圖模板的html片段,當它們的匹配數據出現在屏幕上時,它們就會出現。例如,如果您有一個客戶訂單並且它有一個供應商地址,則供應商地址視圖模板會顯示數據填充。CSS:可以通過html文檔中途定義樣式?

不幸的是,這些不能訪問「MasterPages」,也不知道他們的CSS環境。

不是用樣式標籤加載它們,有沒有什麼辦法可以創建部分CSS文件,這些文件可以用於特定的html代碼片段,一種內嵌CSS樣式部分?

這將是非常好的撲通下來就在我們渲染局部視圖:

<style type="text/css"> 
    input { margin: .2em .2em; 
      overflow: hidden; 
      width: 18.8em; 
      height: 1.6em; 
      border: 1px solid black;} 
</style> 

有在特定HTML代碼段的15個左右的輸入字段的格式相同。這些被換出,所以輸入字段的位置改變。這也可能意味着在每個局部視圖上重置CSS。

回答

2

我的事情,一個想法是將包括額外的內容部分在母版頁

<head runat="server"> 
    <title> 
     <asp:ContentPlaceHolder ID="TitleContent" runat="server" /> 
    </title> 
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 
    <asp:ContentPlaceHolder ID="CssContent" runat="server" /> 
</head> 

Head這樣做,你就可以注入的具體樣式每個視圖。

編輯:張貼後我認爲上述不是你所指的。你可能會考慮滾動自己ViewUserControl類似於Script & CSS Registration Helper in ASP.NET MVC?

+0

因此,如果我們有20個部分視圖(.ascx文件)並且每個想要將內容添加到html頭部,那麼您會怎麼做?像(面板)Master.FindControl(「CssContent」)。someFunctionToAppendContent()? – 2010-06-07 20:17:29

+0

@Dr Zim - 我看到下面的評論談到.ascx控件,我必須承認我錯過了那部分,所以我的回答可能不正確。上面的解決方案適用於'ViewPage'(如果我沒有弄錯)。按照我現在的理解,解釋這個問題 - 我有多個.ascx控件,它們都有獨特的CSS樣式。樣式是在每個控制文件中定義的。我希望CSS成爲文檔頭部的一部分,而不是分散在我的頁面的HTML中。 – Ahmad 2010-06-08 18:30:49

+0

@Dr Zim - 另一個選擇是創建你自己的t4模板或者有一個'ViewModel',它包含一個對css文件的引用,然後你可以將它包含在Head中。我會根據你的迴應更新答案.. – Ahmad 2010-06-08 18:33:11

1

爲什麼沒有在部分視圖中引用的css文件,或者我是否在提出問題的要點?

+0

每個視圖都有自己的css文件。將相關的CSS保留在部分視圖的文本中而不是每個單獨的文本文件將是很好的。我們不知道給定的html頁面會出現哪個局部視圖。 – 2010-06-07 05:43:41

+0

你可以參考一個CSS文件約1/2的HTML文件的正文?這基本上與我所描述的相同,只是我想將CSS保留在與部分視圖(html片段)相同的文本文件中。 – 2010-06-07 05:46:25

+0

儘管您可以在HTML文件的正文部分內聯一個樣式塊,但您不應該這樣做:如果您這樣做,那麼它不是有效的HTML,也不是如果將其鏈接。艾哈邁德下面描述的可能更多的是你要找的東西。 – 2010-06-07 06:04:13