ASP.NET MVC - просмотр с главной страницы, как установить заголовок?
Каков предпочтительный способ установки заголовка html (в голове) для просмотра при использовании мастер-страниц?
Один из способов - использовать файл Page.Title в .aspx, но это требует на главной странице, которая может испортиться с кодом HTML. Таким образом, давайте не берем никаких элементов управления на стороне сервера, только чистый html. Любые лучшие идеи?
UPDATE: Я хотел бы установить заголовок в виде NOT в контроллере или модели.
Ответы
Ответ 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>