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