42

特定のモデル (テナント) に関連するいくつかのセクション (AboutMe、MyPreferences) を持つプロファイル ページを作成しています。これらのセクションのそれぞれが部分ビューになり、AJAX を使用して部分的なページ更新が可能になります。

ActionResultTenantControllerをクリックすると、厳密に型指定されたビューを作成でき、モデル データがビューに正常に渡されます。部分的なビューではこれを達成できません。

部分ビューを作成しました_TenantDetailsPartial:

@model LetLord.Models.Tenant
<div class="row-fluid">
    @Html.LabelFor(x => x.UserName) // this displays UserName when not in IF
    @Html.DisplayFor(x => x.UserName) // this displays nothing
</div>

次に、MyProfile言及された部分ビューをレンダリングするビューがあります。

@model LetLord.Models.Tenant
<div class="row-fluid">
    <div class="span4 well-border">
         @Html.Partial("~/Views/Tenants/_TenantDetailsPartial.cshtml", 
         new ViewDataDictionary<LetLord.Models.Tenant>())
    </div>
</div>

DIV 内のコードをラップする_TenantDetailsPartial@if(model != null){}、ページには何も表示されないため、空のモデルがビューに渡されていると推測されます。

「セッション」のユーザーから強く型付けされたビューを作成するActionResultと、ビューに渡されるのはなぜですか? から作成されていない部分ビューに「セッション」のユーザーを渡すにはどうすればよいActionResultですか? コンセプトについて何か不足している場合は、説明してください。

4

4 に答える 4

76

実際にモデルをパーシャルに渡しているのではなく、new ViewDataDictionary<LetLord.Models.Tenant>(). これを試して:

@model LetLord.Models.Tenant
<div class="row-fluid">
    <div class="span4 well-border">
         @Html.Partial("~/Views/Tenants/_TenantDetailsPartial.cshtml", Model)
    </div>
</div>
于 2013-03-01T00:24:50.103 に答える
15

また、これにより機能する可能性があります。

@{
Html.RenderPartial("your view", your_model, ViewData);
}

また

@{
Html.RenderPartial("your view", your_model);
}

MVC の RenderPartial および同様の HTML ヘルパーの詳細については、この人気のある StackOverflow スレッドを参照してください。

于 2014-10-30T07:10:06.983 に答える
7

モデル データを部分ビューに渡す 3 つの方法 (他にもあるかもしれません)

閲覧ページです

方法 1ビューで入力

@{    
    PartialViewTestSOl.Models.CountryModel ctry1 = new PartialViewTestSOl.Models.CountryModel();
    ctry1.CountryName="India";
    ctry1.ID=1;    

    PartialViewTestSOl.Models.CountryModel ctry2 = new PartialViewTestSOl.Models.CountryModel();
    ctry2.CountryName="Africa";
    ctry2.ID=2;

    List<PartialViewTestSOl.Models.CountryModel> CountryList = new List<PartialViewTestSOl.Models.CountryModel>();
    CountryList.Add(ctry1);
    CountryList.Add(ctry2);    

}

@{
    Html.RenderPartial("~/Views/PartialViewTest.cshtml",CountryList );
}

メソッド 2 パス スルー ViewBag

@{
    var country = (List<PartialViewTestSOl.Models.CountryModel>)ViewBag.CountryList;
    Html.RenderPartial("~/Views/PartialViewTest.cshtml",country );
}

方法 3 パススルー モデル

@{
    Html.RenderPartial("~/Views/PartialViewTest.cshtml",Model.country );
}

ここに画像の説明を入力

于 2016-05-15T15:29:47.300 に答える