Zastanawiałem się, co, jeśli to możliwe, jest najlepszym sposobem renderowania częściowego za pomocą nowego silnika widoku brzytwy. Rozumiem, że jest to coś, co nie było do końca ukończone
W tej chwili używam RenderPage do renderowania kontrolki użytkownika:
@RenderPage("~/Views/Shared/LocaleUserControl.cshtml",ViewData.Model)
Strona wywołująca RenderPage używa strony układu (wzorcowej) z trzema zdefiniowanymi sekcjami: TitleContent, HeadContent i Maincontent. Kiedy próbuję wyrenderować kontrolę ustawień regionalnych z tej strony, wydaje się, że te sekcje są również wymagane - powinny być wymagane tylko na stronie wywołującej i są obecne. Otrzymuję następujący komunikat, niezależnie od tego, czy uwzględnię sekcje w moim częściowym widoku (oczywiście nie chcę uwzględniać tych sekcji, ale wydawało się to interesującym punktem debugowania ...).
Następujące sekcje zostały zdefiniowane, ale nie zostały wyrenderowane na stronie układu „~ / Views / Shared / LocaleUserControl.cshtml”: TitleContent; HeadContent; Główna zawartość
Mój częściowy pogląd jest następujący (na podstawie poniższego linku ):
@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>