Czy możliwe jest włączenie sekcji zdefiniowanej w częściowym pliku? Jeśli tak to jak?
Mam wezwanie częściowe MetaTags.cshtml
który zawiera sekcję MetaTags
. Używam sekcji, ponieważ chcę, aby były dostępne widokiaby w razie potrzeby zastąpić to tagami niestandardowymi - na przykład; na stronie z postem na blogu użytkownik może dodać niestandardowe metatagi na Facebooku. Sekcja ma częściowy charakter _Layout.cshtml
łatwiejsze do zarządzania i do separacji kodu.
Następujące użycie nie działa: _Layout.cshtml
<head>
@RenderSection("MetaTags", required: true)
<title>@ViewBag.Title - My ASP.NET Application</title>
...
</head>
Odpowiedzi:
0 dla odpowiedzi № 1Jeśli ustawiasz sekcję w widoku (nie w widoku częściowym), powinna działać.
Nie ma możliwości częściowego korzystania z sekcji, ale do osiągnięcia tego celu można użyć innego sposobu, takiego jak ViewBag lub Custom Html helper.
Poniżej znajduje się przykładowa metoda ViewBag:
na twojej stronie
@Html.Partial("partial", new ViewDataDictionary { {"vb", ViewBag}})
@if (ViewBag.MetaInfo != null)
{
var metaDict = ViewBag.MetaInfo as IDictionary<string, string>;
if(metaDict != null)
{
foreach (var item in metaDict)
{
<meta name="@item.Key" content="@item.Value" />
}
}
}
</head>
potem w częściowym widoku:
@{
ViewBag.LayoutPageVB = ((dynamic)ViewData["vb"]);
var metaDict = new Dictionary<string, string>();
metaDict.Add("title", "c");
ViewBag.LayoutPageVB.MetaInfo = metaDict;
}
dostaniesz tytuł meta tagu c
osobiście uważam, że nie jest to dobre podejście i nie jest to odpowiedź na częściowe uaktualnienie układu, ale jest to jeden ze sposobów osiągnięcia tego, czego potrzebujesz.