2009-06-11 142 views
0

我有一個MasterPage,它是兩列布局,左列菜單,右列內容。整個頁面是XHTML/Divs/CSS佈局。所以列是div的CSS應用來調整它們的大小。臨時覆蓋ASP.NET中的主題CSS

對於一頁網格頁面,我只希望一列(內容列)爲最大可視區域的100%寬度。

如何在這一個異常頁面上使用相同的母版頁和相同的主題?

創建一個全新的主頁面,併爲這個頁面添加一個新的CSS屬性到主題看起來像矯枉過正。有沒有辦法在這個頁面上覆蓋內容div的CSS寬度屬性?我不是CSS的專家,但我認爲有辦法做到這一點。

對於讓客戶端做重寫,我確實有一些保留;出於兼容性原因。我寧願服務器端覆蓋。

有什麼建議嗎?

+0

我覺得無痛解決這個問題的方法是添加另一個內容區域是充當一列。該div可以具有100%寬度的樣式。我會發布結果。 – Fireworks 2009-06-11 03:22:21

回答

0

工作就像一個魅力。解決這個問題的方法是用一個新的div爲主頁面添加另一個區域,該區域的CSS寬度爲100%。在你的CSS文件中創建一個新的樣式條目。在內容頁面上,您希望100%寬度的區域的樣式爲100%,而不是與兩個列布局相對應的區域。

之後,只需將內容頁面設置爲使用內容頁面內容的主頁內容即可。

母版:

<!-- start page --> 
<div id="page"> 
    <!-- start content --> 
    <div id="contentOneColumn" > 
     <asp:ContentPlaceHolder ID="ContentPlaceHolderContentOneColumn" runat="server"> 
     <!-- content that needs 100% width, one column --> 
    </asp:ContentPlaceHolder> 
    </div>  
    <div id="content" > 
     <asp:ContentPlaceHolder ID="ContentPlaceHolderContent" runat="server"> 
     <!-- content that works with two column --> 
     </asp:ContentPlaceHolder> 

CSS:

/* Content */ 

content { 
    float: right; 
    width: 600px; 
} 

/* ContentOneColumn */ 
contentOneColumn { 
    float:none; 
    width: 850px; 
} 
0

您可以使用類似於:

#content { 
    /* Some styles */ 
    width: 100% !important; 
} 
+0

我認爲這是你如何覆蓋客戶端? – Fireworks 2009-06-11 02:44:42

1

每個頁面代碼中不同的CSS類,並針對在你的CSS這個類。下面是完成它一個愚蠢的,簡單的方法:

創建自己的母版類:

class MyMasterPage : MasterPage 
{ 
    public string BodyClass {get;set;} 
} 

在你的母版頁:

<%@ Master Inherits="MyNamespace.MyMasterPage" %> 
... 
<body class="<% =this.BodyClass %>"> 
    <asp:ContentPlaceHolder ... /> 
</body> 
... 

而在你的頁面的代碼隱藏:

void Page_Load(object sender, EventArgs e) 
{ 
    ((MyMasterPage)Master).BodyClass = "specialpage"; 
} 

而在你的CSS類中:

.specialpage .mainColumn {width:100%;} 
.specialpage .otherColumn {display:none;} 
+0

有趣。不過,我不得不改變所有的頁面以適應例外。除此頁面之外,我沒有任何要求將不同樣式應用於基於頁面的共享div。給我一個主意,但。 – Fireworks 2009-06-11 03:10:18

0

使用OnPreRenderComplete事件,像這樣:

protected override void OnPreRenderComplete(EventArgs e) 
    { 
     base.OnPreRenderComplete(e); 
     rfv_login.CssClass = "ValidatorReset"; 
     rfv_pwd.CssClass = "ValidatorReset"; 
    }