È possibile includere una sezione definita nel file parziale? Se é cosi, come?
Ho un parziale chiamato MetaTags.cshtml
che contiene una sezione MetaTags
. Io uso una sezione perché voglio che le viste siano in gradoper sovrascriverlo con tag personalizzati quando necessario, ad esempio; per una pagina di post del blog l'utente può aggiungere metatag Facebook personalizzati. La sezione è parziale per mantenere il _Layout.cshtml
più maneggevole e per la separazione dei codici.
Il seguente utilizzo non funziona: _Layout.cshtml
<head>
@RenderSection("MetaTags", required: true)
<title>@ViewBag.Title - My ASP.NET Application</title>
...
</head>
risposte:
0 per risposta № 1Se si imposta la sezione in Visualizza (non vista parziale), dovrebbe funzionare.
Non è possibile utilizzare la sezione in modo parziale, ma è possibile utilizzare un altro modo, ad esempio ViewBag o l'helper Html personalizzato per ottenere ciò.
Di seguito è riportato un esempio del metodo ViewBag:
nel tuo _Layout
@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>
quindi in visione parziale:
@{
ViewBag.LayoutPageVB = ((dynamic)ViewData["vb"]);
var metaDict = new Dictionary<string, string>();
metaDict.Add("title", "c");
ViewBag.LayoutPageVB.MetaInfo = metaDict;
}
si otterrà il titolo del meta tag c
personalmente, penso che questo non sia un buon approccio, e non è la risposta del layout di aggiornamento parziale, ma è un modo per ottenere ciò di cui hai bisogno.