Es posible resolver esto con ayudantes de afeitar. Es un poco elegantemente hacky ™ pero hizo el trabajo por mí.
Así en una vista padre que definen un ayudante:
@helper HtmlYouWantRenderedInAPartialView()
{
<blink>Attention!</blink>
}
Luego, cuando se renderiza parcial, se pasa esta ayuda a que
@Html.Partial("somePartial", new ViewDataDictionary { { "OptionalSection1", (Func<HelperResult>)(HtmlYouWantRenderedInAPartialView) } })
A continuación, dentro de una visión parcial se llama a esta ayuda semejante entonces
<div>@ViewData.RenderHelper("OptionalSection1")</div>
Por último, necesita tener este método de extensión para simplificar el pa "que llama" rt
public static HelperResult RenderHelper(this ViewDataDictionary<dynamic> viewDataDictionary, string helperName)
{
Func<HelperResult> helper = viewDataDictionary[helperName] as Func<HelperResult>;
if (helper != null)
{
return helper();
}
return null;
}
Así que el punto es que pasar un delegado de esta ayuda y luego, cuando el punto de vista del niño lo llama, el contenido consiguen prestados donde desee.
El resultado final de una vista del niño se vería así
<div><blink>Attention!</blink></div>
Cualquier solución? Tengo un Diseño-> Página-> Parcial. Necesito que los scripts/layouts sean referenciados y cargados en la cabecera cuando ese parcial está allí. ¿Alguna forma no estúpida de hacer esto? ¿Cuál es el objetivo de esta restricción de todos modos? – Shimmy
@Shimmy podrías intentar poner algún tipo de estructura de datos en ViewData que especifique a qué cosas se debe hacer referencia en la página Diseño. – marcind
Gracias. Acabo de leer [Cassette] (http://getcassette.net/) ahora, que parece una solución decente. Gracias. – Shimmy