2012-08-16 150 views
1

我做了一個網站是基於一個MasterPage和創建幾頁後,我添加了一個新的<asp:ContentPlaceHolder>但似乎現有的網頁不會更新包括它,但新的網頁做。ASP.NET主頁不更新孩子頁面

有沒有辦法強制更新,或者有沒有適當的方法來做到這一點?我只是保存了主頁,並希望最好的。

+0

你在頁面指令設置的現有內容頁'MasterPage'? – hmqcnoesy 2012-08-16 00:41:21

+0

這是相同的'MasterPage'這是在頂部的代碼鏈接它''%@ Page Title =「」Language =「VB」MasterPageFile =「〜/ MasterPage.master」AutoEventWireup =「false」CodeFile =「addons.aspx .vb「Inherits =」basic_plan「%>' – Joshua 2012-08-16 00:43:56

回答

2

您需要手動將新的<asp:ContentPlaceHolder>添加到舊的aspx頁面。

在您的母版頁:

<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> 
</asp:ContentPlaceHolder> 
<asp:ContentPlaceHolder ID="new_one" runat="server"></asp:ContentPlaceHolder> 

在舊的aspx頁面,添加:

<asp:Content ID="Content3" ContentPlaceHolderID="new_one" runat="server"> 
</asp:Content> 
+0

當然,事實並非如此,如果我的網站哪裏更大,這將幾乎不可行 – Joshua 2012-08-16 00:49:47

+0

這確實奏效,但我仍然認爲必須有更好/更動態的方式來做它會自動 – Joshua 2012-08-16 00:54:09

+0

@Joshua,當您從母版頁創建內容頁面時,內容頁面的HTML標記將在此時創建。如果您以後在母版頁中添加了新的'',則舊的aspx頁面將無法獲取更新。據我所知,Visual Studio不會自動更新它。 – 2012-08-16 00:55:04

0

如果您在母版頁中創建新的內容佔位符,則您的內容頁不需要有相應的<asp:Content>。如果您想要替換放置在母版頁中的默認內容,它們只需要一個。

如果您打算使用自己的內容更新每個頁面,那麼添加<asp:Content>標記可能會帶來相對較小的不便。

不幸的是,Visual Studio沒有辦法搜索出所有的內容頁面,並用新的<asp:Content>控件進行更新。

但是,你可以通過使用現有<asp:Content>控件的ID,發現這樣做相當快,並做了ctrl + shift + F並使用新<asp:Content>加上你搜索替換。

例如,如果你的內容頁面均已有

<asp:Content ID="Content3" ContentPlaceHolderID="old_one" ... /> 

,那麼你可以搜索是與

<asp:Content ID="Content4" ContentPlaceHolderID="new_one" runat="server" /><asp:Content ID="Content3" ContentPlaceHolderID="old_one" ... /> 

不完全是漂亮取代,但它可以節省一些時間。