가능한 경우 새로운 면도기 뷰 엔진을 사용하여 부분을 렌더링하는 가장 좋은 방법이 무엇인지 궁금합니다. 나는 이것이 시간까지 완전히 끝나지 않은 것임을 이해합니다.
지금은 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>