什麼是使用母版頁時設置html標題(頭部)以供查看的首選方式?ASP.NET MVC - 查看母版頁,如何設置標題?
一種方式是通過在.aspx文件中使用Page.Title,但在母版頁要求可能亂用HTML代碼。所以,讓我們假設沒有服務器端控件,只有純HTML。任何更好的想法?
更新:我想在視圖中設置標題而不是在控制器或模型中。
什麼是使用母版頁時設置html標題(頭部)以供查看的首選方式?ASP.NET MVC - 查看母版頁,如何設置標題?
一種方式是通過在.aspx文件中使用Page.Title,但在母版頁要求可能亂用HTML代碼。所以,讓我們假設沒有服務器端控件,只有純HTML。任何更好的想法?
更新:我想在視圖中設置標題而不是在控制器或模型中。
我們在母版頁中結束了
<head runat=server visible=false>
。
這樣我們就可以從Page.Title讀取(Page.Title要求磁頭元件存在,否則它會引發異常,檢查與反射器)。然後,我們使用自己的頭元素 - MVC方式。
內容頁面有@Page指令的Title屬性。
當我創建一個新的MVC項目時,它有文件並使用母版頁。看起來,它似乎將標題傳遞給ViewData作爲ViewData [「Title」],並在主頁面<head>
中有一個腳本塊輸出ViewData [「Title」]。
我看到了很多的使用<%= ViewData["Title"] %>
選項的人。
我想你也可以插入名爲Title的ContentPlaceHolder
,然後在你的頁面上使用它,但是在我見過的所有MVC示例中,它們都使用第一個選項。
你總是可以使用JavaScript在您的視圖頁面:
<script type="text/javascript>
document.title = "Hello World";
</script>
不要這樣做,因爲JavaScript從來沒有100%給出。 – 2009-03-10 13:40:40
對於ASP.NET內容網頁只需在<%@ %>
佔位符添加Title=""
。
我結束了使用代碼隱藏文件來實現的Page_Load()
方法Page.Title="..."
。
我不喜歡這樣做,但是直接在.aspx頁面中實現更改的嘗試不起作用,因爲它導致出現兩個<title>
標記,我生成的標記和由主生成的標記文件從繼承的頁面。
理想情況下,我的頁面代碼應該已經覆蓋了主文件的<title>
值,但我想這只是ASP.Net MVC仍然存在的那些怪癖之一,並且可能已經在更新版本的ASP中修復了這一點.NET MVC框架(我們仍然在ASP.Net MVC測試版)
在我們的主頁,我們創造了一個既「初始化」的ContentPlaceHolder,和「標題」的ContentPlaceHolder。如果有人想以編程方式設置Page.Title,他們可以在init佔位符中的CSharp中設置它,或者他們可以使用標籤覆蓋「標題」佔位符。
母版頁
<asp:ContentPlaceHolder id="init" runat="server"></asp:ContentPlaceHolder>
<head runat="server">
<asp:ContentPlaceHolder ID="title" runat="server">
<title><%=this.Page.Title%></title>
</asp:ContentPlaceHolder>
</head>
查看頁面 既可以覆蓋整個 「標題」 內容佔位符:
<asp:Content ID="Content1" ContentPlaceHolderID="title" runat="server">
<title>Home Page</title>
</asp:Content>
或編程設置頁面標題。
<asp:Content ID="Content1" ContentPlaceHolderID="init" runat="server">
<%this.Title = "Home Page";%>
</asp:Content>
務必從Page指令在頂部取下標題=「」,否則你將不能夠通過編程修改Page.Title。
我有一個基本視圖類,它從資源文件中設置頁面標題。對我來說工作很好。
你可以在你的母版頁這樣做:
<title>
<%:MyTitle + " :: " %>
<asp:ContentPlaceHolder ID="TitleContent" runat="server">
</asp:ContentPlaceHolder>
</title>
其中MyTitle =從你的web.config或硬的文字,如「我的網站」
現在在視圖頁面的一些值(指數例如):
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
<%:"My Home Page"%>
現在,當你瀏覽你的主頁,TI這將是「我的網頁::我的主頁」。
我創建(使用的get/set)調用一個Title屬性應用類:
public static class Application
{
static string title;
public static string Title
{
get { return title; }
set { title = value; }
}
}
我然後設置該屬性上的Page_Load事件的每一頁:
Application.Title = "Silly Application";
那麼我只是在主頁面上引用該屬性:
<div id="divApplicationTitle">
<asp:HyperLink runat="server" NavigateUrl="~/Default.aspx"><asp:Image ID="imgApplicationImage" runat="server" SkinID="skinApplicationLogo" /><%=Application.Title%></asp:HyperLink>
</div>
是的,但我是sai如上所述,它需要在母版頁中的
,這不是我想要的。 – bh213 2008-11-28 22:22:12然後你的問題是無意義的,因爲你說你想使用服務器端的構造來設置你的內容頁面的標題,但是你不想使用服務器端的構造。 – sliderhouserules 2008-11-29 21:00:28
那麼,我想避免任何aspx控件。
吃掉了我們使用的一些html,我們可以解決這個問題,但是我寧願只使用純html。主頁面和控件應該是可以接受的。 – bh213 2008-11-30 13:28:46