Me preguntaba qué, si es posible, es la mejor manera de hacer un parcial utilizando el nuevo motor de visión de afeitar. Entiendo que esto es algo que no había terminado por completo en el momento enRazor view engine - ¿Cómo puedo agregar vistas parciales?
En este momento estoy usando RenderPage para representar el control de usuario:
@RenderPage("~/Views/Shared/LocaleUserControl.cshtml",ViewData.Model)
La página de llamada RenderPage utiliza una página de diseño (maestro) con tres secciones definidas: TitleContent, HeadContent y Maincontent. Cuando intento renderizar mi control de configuración regional desde esta página, parece que estas secciones también son obligatorias; solo deben solicitarse en la página de llamada y están presentes. Recibo el siguiente mensaje, independientemente de si incluyo o no las secciones en mi vista parcial (obviamente no quiero incluir estas secciones, pero me pareció un punto de depuración interesante ...).
Las siguientes secciones se han definido pero no se han rendido en la página de diseño '~/Views/Shared/LocaleUserControl.cshtml': TitleContent; HeadContent; Maincontent
Mi vista parcial es la siguiente (adaptado de la siguiente link):
@inherits System.Web.Mvc.WebViewPage<LocaleBaseModel>
@using System.Web.UI;
<p>
@Html.LabelFor(model => Model.CountryName)
<br />
@Html.DropDownListFor(model => Model.CountryName,null, string.Empty, new { @class = "text", accesskey="u"})
</p>
<p>
@Html.LabelFor(model => Model.StateProvince)
<br />
@Html.DropDownListFor(model => Model.StateProvince, null, string.Empty, new { @class = "text", accesskey="t" })
</p>
<script type="text/javascript">
$(function() {
var countries = $("#CountryName");
var statesprovinces = $("#StateProvince");
countries.change(function() {
statesprovinces.find('option').remove();
var url = '@Url.Action("GetStatesProvinces", "Base")';
$.getJSON(url, { countryId: countries.val() }, function (data) {
$(data).each(function() {
$("<option value=" + this.ID + ">" + this.Name + "</option>").appendTo(statesprovinces);
});
});
});
});
</script>
Gracias por los comentarios ... Html.EditorPuede ser una buena idea en este caso, pero me gustaría ver alternativas ya que este no es el caso para ejemplos más complejos. Definitivamente estaré ejecutando en esto de nuevo pronto Html.Partial no funcionará, ya que debe derivar de ViewPage o ViewUserControl mientras que el razor parcial deriva de WebViewPage ... –
Html.Partial funciona perfectamente bien. Comience un nuevo proyecto ASP.NET MVC 3 en Visual Studio usando el motor Razor view, abra el archivo '_Layout.cshtml' en la carpeta 'Shared' y revise cómo la inclusión de' _LogOnPartial.cshtml' que se deriva de 'WebViewPage' es hecho (usando Html.Partial).Entonces, no, el parcial no necesita derivarse de 'ViewPage' o' ViewUserControl' para que '' Html.Partial' funcione. –
Hmmm, parece que tienes razón. También parece que tengo algo de depuración que hacer. ¡Gracias! –