на основе кода, представленной выше, вы, кажется, задайте ViewBag.Title в частичном представлении и попытайтесь использовать его в представлении «Индекс». Это не сработает. Вам также кажется, что вы хотите написать заголовок статьи, который в частичном случае не изменит название страницы.
Вы должны рассмотреть, где вы хотите установить Title; либо в действии контроллера, либо в основном представлении. Вот пример:
Контроллер
public ActionResult Index(int id)
{
ViewBag.Title = "My Title";
return View(_db.Articles.Find(id));
}
Измените файл Index.cshtml:
Index.cshtml
@model Article
<h2>@ViewBag.Title</h2>
@Html.Partial("_Partial", Model)
А затем обновить частичное. Обратите внимание, что движок Razor достаточно умен, чтобы определить, какой файл cshtml использовать, поэтому вам не нужно указывать полный путь. Общее соглашение об именах заключается в том, чтобы начинать частичное с подчеркиванием.
_Partial.cshtml
@model Article
<h2>@Model.Title</h2>
...
Я не знаю, как ваша модель настроена, так что вы можете изменить это. Вы также должны учитывать, почему вы предпочитаете использовать частичный, а не просто встраивать все в индексный файл.
Если идея состоит в том, что на странице должна отображаться отдельная статья (которая, по-видимому, подразумевает запрос Linq), вы можете просто создать ее на одном представлении. Вот пример:
Предлагаемые Index.cshtml
@{
ViewBag.Title = Model.Title;
}
@model Article
<h2>@Model.Title</h2>
<p>@Model.Content<p>
Это всего лишь пример, конечно же, и вы должны применить форматирование, как вы хотите. Это приведет к тому, что заголовок страницы (в браузере) будет указывать на «Название сайта - Заголовок статьи» и покажет заголовок в элементе h2.
Не могли бы вы показать весь ваш index.cshtml? где вы также выполняете частичное, а также действие контроллера для «Index()»? – mtaanquist