Мне было интересно, что, если это возможно, является лучшим способом визуализации частичного с использованием нового движка вида бритвы.Я понимаю, что это то, что не было полностью завершено к тому времени
. Сейчас я использую RenderPage для рендеринга пользовательского элемента управления:
@RenderPage("~/Views/Shared/LocaleUserControl.cshtml",ViewData.Model)
Страница, вызывающая RenderPage, использует макет (мастер) страница с тремя определенными разделами: TitleContent, HeadContent и Maincontent.Когда я пытаюсь отобразить свой языковой контроль с этой страницы, кажется, что эти разделы также обязательны - они должны быть только на вызывающей странице и присутствуют.Я получаю следующее сообщение, независимо от того, включаю ли я разделы в свое частичное представление (очевидно, я не хочу включать эти разделы, но это показалось интересной точкой отладки ...).
Следующие разделы были определены, но не были отображены на странице макета '~ / Views / Shared / LocaleUserControl.cshtml': TitleContent;HeadContent;MainContent
Мое частичное представление выглядит следующим образом (адаптировано из следующей ссылка ):
@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>