2015-11-04 2 views
4


Я пытаюсь получить заголовок страницы с частичной страницы, но я не могу сделать это в MVC. Есть ли у вас какие-либо идеи?

Как установить заголовок страницы с частичной страницы в MVC

в child.cshtml:

@{ViewBag.Title="this is child"} > this is not working in a child 

Я попытался получить информацию ViewData как:

в viewpage.cshtml

ViewBag.Title = ViewData["pagetitle"]; 

в child.cshtml:

ViewData["pagetitle"] = "this is child"; 
+1

дубликата [http://stackoverflow.com/questions/11509996/set-a-page-title-from-a-partialview](http:/ /stackoverflow.com/questions/11509996/set-a-page-title-from-a-partialview) – user1672994

+0

Вы используете '_Layout.cshtml'? Если да, то как вы показываете '@ ViewBag.Title'? – markpsmith

+0

Я использую _layout.cshtml, и у меня нет проблем с изменением названия страницы в представлении. Моя часть - часть взгляда. _Layout> _viewpage> _partialpage, и ваша ссылка не работает для меня :) – Cagatay

ответ

4

Установка озаглавить как @{ ViewBag.Title = "..."; } в представлении ребенка не будет работать, если у вас есть название в макете. Установка заголовка не является обязанностью PartalView.

Вместо этого вы можете использовать JavaScript, как это:

document.title = "new title"; 
+1

Google не признает заголовок, если установлен с javascript. –

+0

aham, но это должен быть способ перемещения данных с частичной страницы для просмотра страницы вправо? – Cagatay

+0

Что вы подразумеваете, перемещая данные с частичной страницы для просмотра? – Vnuuk

6

К сожалению, вы не можете сделать это в частичный вид.

Причина этого в том, что к тому времени, когда ваш частичный вид анализируется парсером представления, основной макет (который содержит теги <title></title>) уже был записан в поток ответов приложений, готовый к покраснению в браузер.

Если вам действительно нужно, то я предполагаю, что вы могли бы проанализировать текущий поток ответов и использовать регулярное выражение для соответствия и замены названия страницы, но я бы не предложил это, поскольку он довольно неэффективен.

Как вы уже сказали, ваш лучший вариант (хотя и не идеальный - одна из причин, являющаяся важным тегом заголовка для поисковых систем), задает заголовок с использованием Javascript.

Это может быть достигнуто следующим образом:

<script type="text/javascript"> 
document.title = '@ViewBag.Title'; 
</script> 
+0

Я понимаю, но это должен быть способ переместить данные с частичной страницы, чтобы просмотреть страницу справа? – Cagatay

+0

Нет, из всех расследований, которые я делал на проходе, это невозможно. Родительское представление может передавать данные в частичное представление, но не наоборот. –