C# 如何从EditorFor中访问我的ViewModel的根对象?
我有一个视图,当然还有它自己的视图模型:C# 如何从EditorFor中访问我的ViewModel的根对象?,c#,asp.net-mvc,razor,viewmodel,editorfor,C#,Asp.net Mvc,Razor,Viewmodel,Editorfor,我有一个视图,当然还有它自己的视图模型: @model TransportViewModel 我正在使用EditorFor显示一个ViewModel对象的属性列表: @Html.EditorFor(model => model.Car.WheelPropertyList) 在我的EditorFor中,我可以轻松显示我的属性: @model WheelProperty @Html.Label(Model.PropertyA) @Html.Label(Model.PropertyB)
@model TransportViewModel
我正在使用EditorFor显示一个ViewModel对象的属性列表:
@Html.EditorFor(model => model.Car.WheelPropertyList)
在我的EditorFor中,我可以轻松显示我的属性:
@model WheelProperty
@Html.Label(Model.PropertyA)
@Html.Label(Model.PropertyB)
我的问题是:如何从EditorFor中访问ViewModel的“根”?上面编写的代码正在访问:
TransportViewModel.Car.WheelPropertyList.ElementAt(n).PropertyA
TransportViewModel.Car.WheelPropertyList.ElementAt(n).PropertyB
这是可以理解的。问题是,我如何访问,例如:
TransportViewModel.Train.ModelList.ElementAt(0).Name
从我的编辑者那里
我知道使用ViewBag可以解决此问题。然而,我总是听说,如果您的ViewModel是完美的,那么您根本不需要使用任何ViewBag。这是真的还是我真的应该在这种情况下使用ViewBag?您可以这样访问汽车的属性:
foreach(var item in Model.Car.WheelPropertyList)
{
<span>@item.PropertyA</span>
<span>@item.PropertyB</span>
}
foreach(Model.Car.WheelPropertyList中的var项)
{
@项目1.财产a
@项目1.PropertyB
}
一种方法是在子对象中提供对根对象的引用:
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;}
...
}
公共类TransportViewModel
{
公共列表WheelPropertyList{get;set;}
...
}
公营物业
{
公共交通视图模型交通视图{get;set;}
公共字符串属性{get;set;}
公共字符串属性b{get;set;}
...
}
然后,您的编辑器可以轻松地引用根对象的属性。@EhsanSajjad,谢谢,但这对您有什么帮助?假设我的模型(viewmodel)由实体车和实体火车组成。我已经发布了答案,希望能有所帮助。我知道这一点,但这不是重点,我真的需要使用EditorFor。我的项目绑定依赖于editorfors。我的问题确实是:如何从编辑器中访问ViewModel的根,因为您想使用编辑器进行访问?是的,我想从编辑器中访问Model.Train,因为它正在Model.Car.WheelPropertyList上执行“它的工作”。哦。。。我想在没有ViewBagsy的情况下实现这一点,你必须像taylor那样创建导航属性