Вы отмечаете, что если список связанных ссылок относится только к представлению, он заслуживает того, чтобы его рассматривали как логику навигации, а не как логику приложения. «Жесткое кодирование» списка ссылок в представлении кажется правильным подходом.
Тем не менее, вы определенно хотите отделить логику, которая отображает список ссылок от самого списка ссылок ( data ). Частичное представление должно работать хорошо для этого. Просто определите частичное, которое принимает список связанных ссылок (возможно, в форме заголовка страницы плюс необработанный URL-адрес, или маршрут, или все, что вам подходит).
В каждом представлении, где вы хотите отобразить список связанных ссылок, определите список и передайте его в партиал для рендеринга:
1. MyView.cshtml
@{
var relatedLinks = new Dictionary<string, string>() {
{ "Link one", "/foo" },
{ "Link two", "/foo" }
};
}
@Html.Partial("RelatedLinks", relatedLinks)
1. RelatedLinks.cshtml
<ul>
@foreach(var link in model) {
<li>@Html.Link(model.Key, model.Value)</li>
}
</ul>
Вы можете поместить все это в @Section
и сказать _Layout.cs
, что визуализируйте раздел «связанных ссылок» на странице, только если вы действительно определили такой раздел в своем представлении.
2. MyView.cshtml
@Section Links {
@{
var relatedLinks = new Dictionary<string, string>() {
{ "Link one", "/foo" },
{ "Link two", "/foo" }
};
}
@Html.Partial("RelatedLinks", relatedLinks)
}
2. _Layout.cshtml
@RenderSection("Links", required: false); // Optional section