/ / Includi / Scrittura sezione da Vista parziale - asp.net-mvc, rasoio

Includi / scrivi sezione da Vista parziale - asp.net-mvc, rasoio

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

Se 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.