2011-03-06 13 views
0

我想從局部視圖中更改頁面標題。但顯示以下錯誤如何在PartialView中更改asp.net中的PageTitle mvc

Using the Title property of Page requires a header control on the page. (e.g. <head runat="server" />).

我的母版頁頭部分是在這裏

<head runat="server"> 
    <title> 
     <asp:ContentPlaceHolder ID="TitleContent" runat="server" /> 
    </title> 
</head> 

我的默認頁是這裏

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    <%=ViewData["pagetitle"] %> 
</asp:Content> 

ViewData["pagetitle"]回報例如當前頁面的標題主頁,關於,新聞列表,新聞詳情。但我想改變當前的新聞信息標題而不是News Detail字符串。 News Detail頁面包含部分視圖。部分視圖知道顯示哪個消息。

請幫

回答

0

因爲標題被渲染爲頭部的一部分,是一個局部視圖直接設置頁面標題沒有簡單的方法。

但是你的控制器(它取得要顯示的新聞項目)將知道標題應該是什麼,並且可以將「pagetitle」項目添加到ViewData集合中,然後,您可以直接在主佈局中或在就像你在上面做的那樣,一個特定於頁面的內容區域。

提示:我建議使用靜態字符串屬性(或公共常量字段)創建一個名爲ViewDataKeys的靜態類,用作ViewData集合中的索引器。這有助於避免在處理來自多個源的基於字符串的字典時出現重複,拼寫錯誤和區分大小寫錯誤。

+0

我同意。 @ebattulga - 您可以從渲染控制器內部分視圖的操作中更改ViewData [「pagetitle」]。 – sajoshi 2011-03-07 02:40:16

1

不是真的知道你如何有結構化的文件,但如果你有一個實體的文件夾中,您從您的視圖頁面發送信息,然後在aspx頁面,你可以做這樣的事情:

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    <%:projectName.Resources.Entities.FolderName.FileName%> 
</asp:Content> 
相關問題