2016-12-30 9 views
0

は、MVCでの部分図を説明のURL:このURLに基​​づいて部分ビューでは、常にトップレベルビューから渡されたモデルが必要ですか?ここ

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/partial

部分図は部分図のトップレベル/親ビューから渡さのモデルにバインドされているように見えます。これは部分的なビューを実装するための標準的かつ予期された方法ですか?

これは、いくつかの異なる親ビューから使用されることを意図した部分的なビューには、そのデータを複数の異なるビューモデル作成者に返すために使用できるある種の関連する特殊なクラスが必要であることを示しているようです。これは、MVCパーシャルビューアーキテクチャの正しい解釈ですか?

答えて

2

はい。デフォルトでは、親ビュー(ビュー)モデルが使用されます。しかし、モデル継承の型が厳密に型付けされた型と同じ型である限り、常に別のモデルを明示的に渡すことができます。

@Html.Partial("MyPartialView",Model) 

それとも

@{ var data = new MyClass { SomeProperty = "SomeValue"}; 
@Html.Partial("MyPartialView",data) 

あなたのメインビューを強くなどのCustomerプロパティを持つOrderクラスに型付けされている場合はMyPartialViewが強く、MyClass例えば

@model MyClass

に型付けされたと仮定すると、この

public class Order 
{ 
    public int OrderId { set;get;} 
    public Customer Customer { set;get;} 
} 
public class Customer 
{ 
    public string Name { set;get;} 
} 

あなたは強く強くCustomer型に型付けされた顧客ビューを想定しModel.Customer

@model Order 
<h2>@Model.OrderId</h2> 
@Html.Partial("Customer",Model.Customer) 

を渡すことによって、あなたのメインビューからCustomerクラスに型付けされた部分ビューを呼び出すことができ

@model Customer 
<h2>@Model.Name</h2> 

Customerオブジェクトを渡す限り、どこからでもCustomerパーシャルビューを呼び出すことができます。 (親ビューがCustomerクラスに強く入力されている場合は、明示的にそれを渡す必要はありません)

+0

ありがとうございます。モデルが部分的なビューに個別に関連付けることができないように聞こえます。すなわち、部分ビューのモデルは常に親ビューから渡されなければならないか? – user7242966

+0

いいえ!別のタイプを持つことができます。私が@ Html.Partial( "CustomerDetails")をモデルパラメータなしで呼び出すことができるように聞こえるので、答えは – Shyju

+0

ありがとうございます。MVCは自動的に親モデルへのバインドを自動的に試みますか?上記の例では、それはCustomerモデルですか? – user7242966

関連する問題