/ / Include / Write Section from Partial View - asp.net-mvc, razor

Sekcja Include / Write z widoku częściowego - asp.net-mvc, razor

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 № 1

Jeś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.