2012-01-25 24 views
0

如果某些視圖模型的控制動作傳遞對象說(「otherViewModeObj」),以便然後呈現方式直接對象,還可以使用該對象通過一些局部視圖,視圖訪問的是強類型的其他視圖模型說(「mainViewModel」)視圖。

更新
如何訪問視圖中的對象(asp.net mvc)?

public class MainViewModel 
    { 
     prop1{} 
     prop2{} 
    } 



public class SubViewModel 
{ 

public list<SubViewModel> obj{ get; set; } 

} 



行動

Public ActionResut action() 
    { 
    return View(SubViewModelObj)//But View is Strongly typed to MainViewModel 
    } 



那麼我怎樣才能訪問該obj(的SubViewModelObj)客棧視圖?

回答

1

我不知道如果我理解你的問題完全,但你可以做的是有其他視圖模型在主視圖模型的屬性。

public class SubViewModel 
{ 

} 

public class MainViewModel 
{ 
    //MainViewModel properties 

    public SubViewModel SubViewModelData { get; set; } 

} 

鑑於:

@Html.Partial("_SomePartialView", Model.SubViewModelData) 
+0

我更新了我的qst。 KMan檢查出來。 – RollerCosta

0

你不能做到這一點。您有幾種選擇:

  1. 有無SubViewModel從MainViewModel繼承(其實我沒有試過,但它應該工作)。那麼,這應該工作 return View(SubViewModelObj) 但你必須在模型對象轉換爲SubViewModel在視圖中。 我不喜歡這種方法。我說這是客觀的。
  2. 將數據傳遞給通過控制器的ViewData的或ViewBag屬性視圖: this.ViewData["your_object_id_or_name"] = SubViewModelObj; 然後,可以使用的是視圖內: var myobj = (SubViewModel)this.ViewData["your_object_id_or_name"];
  3. 重構這兩個模型類合爲一體。顯然,該模型的某些屬性在視圖中被用作可選屬性,所以將它們設置爲null(或其他默認值)並忽略它們沒有任何問題。
相關問題