Если у меня есть веб-приложение ASP.NET MVC 2 со следующими представлениями:
- Main.aspx
- Page1.aspx
- Page2.aspx
И все представления наследуются от MasterView под названием Site.master,
Я хочу иметь для страницы default Title / H1, который можно переопределить в производных представлениях.
Например, Main.aspx будет иметь «MySite - xxx», Page1.aspx будет иметь «MySite - Page 1», Page2.aspx будет иметь «MySite - Page2».
И если я выберу не устанавливать заголовок / H1 в новом производном представлении, будет отображаться главный заголовок / H1.
С помощью WebForms я бы сделал это следующим образом:
- Сделайте теги Title / H1 на главном runat = "server"
- Показывать защищенные свойства в главном коде программной части
- На Page_Load производного кода программной части установите свойство (Master.Title = "Page 1").
- На Page_PreRender главного кода программной части установите для тегов Title / H1 значение "Мой сайт -" + Title;
Как мы можем добиться этого с помощью ASP.NET MVC?
Я мог бы сделать это в мастере:
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
А затем установите его в представлении:
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
MySite - Page 1
</asp:Content>
Но я хотел иметь возможность указывать только «Страница 1» в представлении, а заголовок волшебным образом менялся на «MySite - Page 1». Знаешь что я имею ввиду? Часть заголовка «MySite -» должна быть шаблоном для заголовка.
Я, наверное, упускаю здесь что-то очевидное. :)
<title>MySite<asp:content.... /></title>
работает не так, как я ожидал. - person Paul Creasey   schedule 05.11.2010