Подтвердить что ты не робот

ASP.NET MVC - просмотр с главной страницы, как установить заголовок?

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

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

UPDATE: Я хотел бы установить заголовок в виде NOT в контроллере или модели.

4b9b3361

Ответ 1

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

<head runat=server visible=false>

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

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

Ответ 2

На наших главных страницах мы создали как "init" ContentPlaceHolder, так и "title" ContentPlaceHolder. Если кто-то хочет программно установить Page.Title, они могут установить его в CSharp в placeholder-заполнителе, или они могут переопределить местозаполнитель "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>

Просмотреть страницу Мог бы либо переопределить весь заполнитель содержимого "title" :

<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="" из указателя страницы в верхней части страницы или не сможете программно изменить страницу .Title.

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

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

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

Ответ 6

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

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

Теперь, когда вы просматриваете домашнюю страницу, заголовок будет "My Web:: My Home Page".

Ответ 7

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

Ответ 8

Я создал класс 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> 

Ответ 9

Существует свойство Title для директивы @Page для страниц контента.

Ответ 10

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

Ответ 11

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

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