2015-10-07 2 views
1

У меня есть класс viewmodel с двумя свойствами (оба из них - объекты других классов). Я могу получить доступ к переменным из родительского класса, используяСвойства доступа в ViewModel в MVC

@Model.Parent.ParentProperty1 

Но я не в состоянии получить доступ к переменным в классе ребенка с утверждением

@Model.Child.Property1 

Моих ViewModel (Отрывок)

public virtual Parent parent {get;set} 
public virtual IEnumerable<Child> Children {get;set;} 

В своем определении класс child имеет ссылку на родительский класс.

Что я пытаюсь добиться

Я хочу, чтобы получить доступ к родительскому свойству из класса ребенка. Что-то вроде

@Model.Child.ParentProperty1 
     or 
@Model.Child.Property1 

При попытке получить доступ к свойствам intelisense предлагает мне функции, которые могут быть применены на IEnumerable.

Есть ли способ, с помощью которого я могу получить доступ к значениям свойств?

PS: Я пытаюсь получить доступ к переменной sin my View.

+1

В вашей модели нет свойства с именем 'Child'. Он имеет имя «Дети», которое является «IEnumerable », поэтому, если он содержит хотя бы один элемент, это будет '@ Model.Children [0] .SomeProperty' или' @foreach (var child в Model, Children) {@ child.SomeProperty} ' –

+0

@StephenMuecke: спасибо за ваш комментарий :) :) .. Мне нужно получить доступ к свойствам с именем переменной' IEnumerable'. Я обычно даю то же имя, чтобы избежать путаницы. – Vini

ответ

1

Ну, intellisense правильно. Вы пытаетесь получить доступ к IEnumerable. Вы можете получить доступ к определенным элементам из IEnumerable, используя ElementAt-function. Вот пример для первого элемента:

@Model.Children.ElementAt(0) 

Мое предположение заключается в том, что вы хотите перебрать свои дочерние элементы? Вы можете сделать это с помощью foreach:

@foreach(var child in Model.Children) 
{ 
    var parent = child.Parent; 
} 
Смежные вопросы