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