Мені було цікаво, що, якщо це можливо, найкращий спосіб зробити частковий за допомогою нового механізму подання бритви. Я розумію, це те, що на той час не було закінчено повністю
Зараз я використовую RenderPage для візуалізації керування користувачем:
@RenderPage("~/Views/Shared/LocaleUserControl.cshtml",ViewData.Model)
Сторінка, що викликає RenderPage, використовує сторінку макета (master) із трьома розділами: 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>