Solución:
Puede compartir el estado entre vistas usando HttpContext.
@{
this.ViewContext.HttpContext.Items["Stuff"] = "some-data";
}
y luego:
@{ var result = Html.Partial("_PartialView"); }
<div id="@this.ViewContext.HttpContext.Items["Stuff"]">
@result
<div>
Excepto que el ejemplo que ha mostrado en su pregunta:
<div id="@someDataFromPartialSomehow">
@Html.Partial("_PartialView")
</div>
está intentando utilizar el someDataFromPartialSomehow
incluso ANTES DE invocando la visión parcial que obviamente es imposible.
También tenga en cuenta que lo que está tratando de lograr es un mal diseño. Si una vista parcial solo puede funcionar en el contexto de algún padre específico, es posible que deba reconsiderar su separación de vistas. Las vistas parciales es algo que debe ser INDEPENDIENTE y REUTILIZABLE, sin importar en qué contexto se coloque. Si asume cosas sobre el padre anfitrión, entonces hay un problema de diseño serio aquí.
Tengo una sugerencia para usted.
Coloque campos de entrada ocultos en la vista parcial y consígalos desde javascript.
Por ejemplo: en _PartialView.cshtml
<input type="hidden" id="someDataFromPartialSomehow" value="5" />
En tu vista
<script>
$(document).ready(function(){
var someDataFromPartialSomehow = $("#someDataFromPartialSomehow").val();
});
</script>
Tenga en cuenta que debe escribir la función js dentro de la función de preparación del documento porque la vista parcial debe estar completamente cargada.