可能であれば、新しいレイザービューエンジンを使用してパーシャルをレンダリングするための最良の方法は何であるか疑問に思いました。これはその時までに完全に終わっていなかったものだと理解しています
現在、RenderPageを使用してユーザーコントロールをレンダリングしています。
@RenderPage("~/Views/Shared/LocaleUserControl.cshtml",ViewData.Model)
RenderPageを呼び出すページは、TitleContent、HeadContent、Maincontentの3つのセクションが定義されたレイアウト(マスター)ページを使用します。このページからロケールコントロールをレンダリングしようとすると、これらのセクションも必要であるように見えます。これらのセクションは、呼び出し元のページでのみ必要であり、存在しているはずです。部分ビューにセクションを含めるかどうかに関係なく、次のメッセージが表示されます(明らかに、これらのセクションを含めたくありませんが、興味深いデバッグポイントのように見えました...)。
次のセクションは定義されていますが、レイアウトページ '〜/ 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>