ASP.NET MVC - Просмотр с главной страницы, как установить заголовок? - PullRequest
16 голосов
/ 28 ноября 2008

Каков предпочтительный способ установки заголовка html (в заголовке) для просмотра при использовании главных страниц?

Одним из способов является использование Page.Title в файле .aspx, но для этого требуется главная страница, которая может связываться с HTML-кодом. Итак, давайте предположим, что нет серверных элементов управления, только чистый HTML. Есть идеи получше?

ОБНОВЛЕНИЕ: Я хотел бы установить название в поле зрения НЕ в контроллере или модели.

Ответы [ 11 ]

32 голосов
/ 17 марта 2009

На наших главных страницах мы создали как «init» ContentPlaceHolder, так и «title» ContentPlaceHolder. Если кто-то хочет программно установить Page.Title, он может установить его в CSharp в заполнителе init или переопределить заполнитель «title» с помощью тегов.

Мастер-страница

<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>

Убедитесь, что вы удалили Title = "" из директивы Page вверху, иначе вы не сможете программно изменить Page.Title.

11 голосов
/ 29 ноября 2008

Я вижу много людей, которые используют опцию <%= ViewData["Title"] %>.

Полагаю, вы также можете вставить ContentPlaceHolder с именем Title, а затем просто использовать его на своей странице, но во всех примерах MVC, которые я видел, они используют первый вариант.

2 голосов
/ 29 ноября 2008

Когда я создаю новый проект MVC, в нем есть файлы и используется главная страница. Глядя на это, кажется, что он передает заголовок ViewData как ViewData ["Title"], а на главной странице в <head> есть блок сценария, который выводит ViewData ["Title"].

1 голос
/ 14 августа 2014

Вы можете сделать это на своей мастер-странице:

<title>
    <%:MyTitle + " :: " %>
    <asp:ContentPlaceHolder ID="TitleContent" runat="server">
    </asp:ContentPlaceHolder>
</title>

, где MyTitle = какое-то значение из вашего web.config или жесткий текст, такой как "My Web"

Теперь на страницах просмотра (например, указатель):

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
<%:"My Home Page"%>

Теперь, когда вы просматриваете свою домашнюю страницу, заголовок будет «Моя сеть :: Моя домашняя страница».

1 голос
/ 10 марта 2009

Я использовал файл с выделенным кодом для реализации Page.Title="..." в методе Page_Load().

Мне не понравилось это делать, однако попытки реализовать изменение непосредственно на странице .aspx не сработали, так как это привело к появлению двух тегов <title>, одного сгенерированного мной, и одного, сгенерированного Главный файл, от которого унаследована страница.

В идеале код моей страницы должен был бы переопределить значение <title> мастер-файла, но я думаю, что это только одна из тех странностей, которые ASP.Net MVC все еще имеет, и та, которая уже может быть исправлена ​​в более новой версии ASP.Net MVC Framework (мы все еще в ASP.Net MVC Beta)

0 голосов
/ 13 мая 2015

Я создал класс под названием Application со свойством Title (используя get / set):

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> 
0 голосов
/ 15 января 2010

У меня есть базовый класс представления, который устанавливает заголовок страницы из файла ресурсов. Работает довольно хорошо для меня.

0 голосов
/ 03 декабря 2008

Для страниц содержимого ASP.NET просто добавьте Title="" в <%@ %> Заполнитель.

0 голосов
/ 02 декабря 2008

Мы закончили с

<head runat=server visible=false>

на главной странице.

Таким образом, мы можем читать из Page.Title (Page.Title требует, чтобы элемент head существовал, в противном случае он выдает исключение, которое проверяется с помощью отражателя). Затем мы используем наш собственный элемент head - MVC way.

0 голосов
/ 30 ноября 2008

Вы всегда можете использовать JavaScript на странице просмотра:

<script type="text/javascript>
    document.title = "Hello World";
</script>
...