2017-09-29 68 views
0

私はメインモデルと部分ビューを持っています。パーシャルビューのモデルは、値のない新しいモデルです。しかし、今では親モデルの1つの要素を部分ビューに渡したいと思います。それについてどうすればいいですか?親モデルの要素を部分ビューに渡す

親ビューと部分ビューは異なるプロパティを持つため、同じモデルを使用できません。

モデル:

public class Parent 
{ 
    . 
    . 
    public List<SelectListItem> TypeList { get; set; } 
    . 
    . 
} 

public class Partial1 
{ 
    public List<SelectListItem> TypeList1 { get; set; } 
    . 
    . 
} 
public class Partial2 
{ 
    public List<SelectListItem> TypeList2 { get; set; } 
    . 
    . 
} 

親ビュー:

@model Models.Parent 

@Html.Partial("_Partial1", new Partial1()) 
@Html.Partial("_Partial2", new Partial2()) 

私はViewDataDictionaryを使用して部分ビューに渡して、それを使用することができます実現が、私はそれを割り当てることができれば、私は思っていました私の部分的なビューモデルを直接。このようなことをすることはできますか?

@Html.Partial("_Partial1", new Partial1(new{TypeList1 =Model.TypeList})) 

上記のコードは、Partial1に1つの引数を取るコンストラクタが含まれていないというコンパイル時エラーが発生します。 EDIT 1

は、クリス・プラットの答えによると、私はこれは、コンパイルを解決error.Butこれは今パーシャルビューで実行時エラーの原因となっている

@Html.Partial("_Partial1", new Partial1{TypeList1 =Model.TypeList}) 

に私のコードを修正1.

Partial1ビュー:

@model Models.Partial1 
@Html.DropDownListFor(model => model.Type, Model.TypeList1, new { @class = "form-control" }) 

は何のViがありません」というエラーがスローされます'Type'キーを持つ 'IEnumerable'型のewData項目。 "

+0

なぜPartial1に2つのList プロパティがないのでしょうか? – adiga

+0

はい、うまくいくはずです。実際の問題は何ですか? –

+0

@ChrisPratt Partial1に1つの引数を取るコンストラクタが含まれていないというコンパイル時エラーが発生しました。 – TheFallenOne

答えて

-1

@{ 
    Html.RenderPartial("Partial1", new { param1 = model.property }); 
} 

MSDN Link使用してみてください。

0

申し訳ありません。そのコードは一見したところで実際に見えましたが、今は問題があります。あなたは匿名オブジェクトとして情報をコンストラクタに渡そうとしていますが、これはパラメータなしです。代わりに、オブジェクト初期化構文を使用する必要があります。

new Partial1 { TypeList1 = Model.TypeList } 
+0

最新の編集を確認してください。 – TheFallenOne

関連する問題