2017-03-27 16 views
1

私はgetbldgaddr_Resultのインスタンスを取るコントローラを持っています。私は部分的に2つのビューモデルをページに配置するビューを作成しようとしています。以下は、私がgetbldgaddr_Resultあるモデルからアイテム1を使用していますので、上記の「親ビュー」タプルItem1のモデルをパーシャルに渡すMVC

@using DirectoryMVC.Models 

@model Tuple<getbldgaddr_Result,getadministrators_Result> 


@{ 
    ViewBag.Title = "Central Office"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<h2>Central Office</h2> 
<div class="row"> 
    @*Display the getAddress view*@ 
    @Html.Partial("_BuildingAddress", Model.Item1) 

</div> 

です。私もgetbldgaddr_Resultにキャストしようとしましたが、私は以下のエラーが表示されます。

辞書に渡さモデル項目タイプ「System.Tuple`2 [DirectoryMVC.Models.getbldgaddr_Result、DirectoryMVC.Models.getadministrators_Result]」であるが、この辞書は、「タイプのモデル項目を必要DirectoryMVC.Models .getbldgaddr_Result '。

public class BuildingAddressController : Controller 
    { 
     private DirectoryEntities de; 

     public BuildingAddressController() 
     { 
      de = new DirectoryEntities(); 
     } 
     // GET: BldgAddr 
     public ActionResult BldgAddr(getbldgaddr_Result bldgres) 
     { 
      //getbldgaddr_Result bldgResult = de.getbldgaddr(district, bldg_no, null).FirstOrDefault(); 
      return View(bldgres); 
     } 
    } 

私の推測がある実際のコントローラは...、私はそれがパラメータとしてタプルオブジェクトを取ることができているが、これはカウンター直感的なようです。建物の住所は、管理に関して何も必要ありません。 考えていますか?

答えて

2

なぜTupleをビューに戻すのですか? 2つの子ビューモデルを持つ親ビューモデルを作成するだけです。タプルの各項目に1つずつ追加し、代わりにコントローラからその項目を返します。

Tuple<Class1, Class2>と仮定すると、あなたはこのようなあなたのviewmodelを構築することができます:コントローラ側で

public class ParentViewModel 
{ 
    public Class1 ChildViewModel1 { get; set; } 
    public Class2 ChildViewModel2 { get; set; } 
} 

、あなたは、単に行うだろう:

var parentViewModel = new ParentViewModel 
         { 
          ChildViewModel1 = Tuple.Item1, 
          ChildViewModel2 = Tuple.Item2 
         }; 
return View(parentViewModel); 

をあなたのビューは次のようになります。

@model ParentViewModel 

// ... 
@Html.Partial("_Partial1", Model.ChildViewModel1) 
@Html.Partial("_Partial2", Model.ChildViewModel2) 
0

Model.Item1がnullでないことを確認してください。渡しているメンバー/プロパティがnullの場合、MVCは親タイプに戻ります。

関連する問題