Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从EditorFor中访问我的ViewModel的根对象?_C#_Asp.net Mvc_Razor_Viewmodel_Editorfor - Fatal编程技术网

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那样创建导航属性