84

新しいカミソリ ビュー エンジンを使用してパーシャルをレンダリングする最善の方法は、可能であればどうすればよいか考えていました。これはその時までに完全に終わっていないものだと理解しています

現在、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>
4

2 に答える 2

127

パーシャルはエディター テンプレートによく似ているため、そのまま含めることができます (もちろん、パーシャルが~/views/controllername/EditorTemplatesサブフォルダーに配置されていると仮定します)。

@Html.EditorFor(model => model.SomePropertyOfTypeLocaleBaseModel)

または、単純にそうでない場合:

@Html.Partial("nameOfPartial", Model)
于 2010-08-01T07:05:31.857 に答える