【问题标题】:how to access object in view (asp.net mvc)?如何访问视图中的对象(asp.net mvc)?
【发布时间】:2012-01-26 02:51:58
【问题描述】:

如果控制器操作将某些 ViewModel 的对象 say("otherViewModeObj") 传递给一个视图,而该视图对其他 ViewModel 来说是强类型的 say("mainViewModel") 那么渲染视图如何直接访问该对象并使用该对象传递一些部分看法。

更新

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 的)??

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    我不确定我是否完全理解您的问题,但您可以做的是将另一个 viewModel 作为主视图模型中的属性。

    public class SubViewModel
    {
    
    }
    
    public class MainViewModel
    {
      //MainViewModel properties
    
      public SubViewModel SubViewModelData { get; set; }
    
    }
    

    在视图中:

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

    【讨论】:

      【解决方案2】:

      你不能那样做。您有几个选择:

      1. 让 SubViewModel 从 MainViewModel 继承(我实际上没有尝试过,但它应该可以工作)。然后,这应该工作 return View(SubViewModelObj) 但您必须在视图中将模型对象转换为 SubViewModel。 我根本不喜欢这种方法。我说是客观的。
      2. 通过控制器的 ViewData 或 ViewBag 属性将数据传递给视图: this.ViewData["your_object_id_or_name"] = SubViewModelObj; 然后你可以在视图中使用 is: var myobj = (SubViewModel)this.ViewData["your_object_id_or_name"];
      3. 将这两个模型类重构为一个。显然,该模型的某些属性在视图中用作可选属性,因此将它们设置为 null(或其他默认值)并忽略它们并没有错。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        相关资源
        最近更新 更多