3

這可能是真的愚蠢的,但我實在不明白它...Asp.net-MVC通視圖模型,以局部視圖

因此,這裏的問題。 我有一個模型說A和B模型

class A 
{ 
    B b = new B(); 
} 

class B 
{ 
    ... 
} 

現在,我有B中的視圖模型(而不是A)。

所以,現在我有一個視圖storngly鍵入A.它調用另一個局部視圖B呈現B的所有屬性。但現在,如何將B的視圖模型傳遞給局部視圖?我可以通過調用Model.b而不是視圖模型來傳遞模型!

+0

簡單的答案是否定的?我會拋出異常。 – Satpal

+0

@Satpal但那該怎麼辦?我必須使用視圖模型。 – Aditi

+0

只需將'B'模型映射到'ViewModel'。您必須已經定義了映射器或轉換器嘗試使用它。在'B'模型中定義了一個將'ViewModel'轉換並返回給你的方法,並且你可以傳遞'ViewModel'。 – Satpal

回答

1

將B類作爲屬性包含在A類中。因此,現在可以使用B類作爲Model.bModel

class A 
{ 
    public B bModel { get; set; } 
} 

class B 
{ 

} 
1

您需要擴展您的一個ViewModel,以便它包含您想要訪問的所有內容。然後根據您是否處於正常或局部視圖,只需訪問它的不同組件。

1

您可以通過ViewBag傳遞B.在控制器添加

ViewBag.dataB = B; 

然後你就可以渲染模型的局部視圖使用

@Html.Partial("PartialName", ViewBag.dataB) 

或者你可以添加一個getter屬性來訪問B和使用渲染部分。