如何从EditorFor中访问ViewModel的根对象
本文关键字:ViewModel 对象 访问 EditorFor | 更新日期: 2023-09-27 17:57:45
我有一个视图,当然还有它自己的ViewModel:
@model TransportViewModel
我正在使用EditorFor显示我的ViewModel对象之一的属性列表:
@Html.EditorFor(model => model.Car.WheelPropertyList)
在我的编辑器内部因为我可以很容易地显示我的属性:
@model WheelProperty
@Html.Label(Model.PropertyA)
@Html.Label(Model.PropertyB)
我的问题是:如何从EditorFor中访问ViewModel的"根"?上面写的代码正在访问:
TransportViewModel.CarWheelPropertyList.ElementAt(n).PropertyATransportViewModel.CarWheelPropertyList.ElementAt(n).PropertyB
这是可以理解的。问题是,我如何访问,例如:
TransportViewModel.Train.ModelList.ElementAt(0).Name
来自我的编辑For?
我知道使用ViewBag可以解决这个问题。然而,我一直听说,如果你的ViewModel是完美的,你就根本不需要使用任何ViewBag。这是真的吗?还是在这种特殊情况下我真的应该使用ViewBag?
一种方法是在子对象中提供对根对象的引用:
public class TransportViewModel
{
public List<WheelProperty> WheelPropertyList {get;set;}
...
}
public class WheelProperty
{
public TransportViewModel TransportView {get;set;}
public string PropertyA {get;set;}
public string PropertyB {get;set;}
...
}
然后,编辑器可以轻松地引用根对象的属性。
您可以这样做来访问Car:的属性
foreach(var item in Model.Car.WheelPropertyList)
{
<span>@item.PropertyA</span>
<span>@item.PropertyB</span>
}