2016-01-24 4 views
0

Я создаю небольшое веб-приложение с ASP.NET MVC C#. У меня есть две модели:Доступ к родительским данным модели из дочернего элемента в ASP.NET MVC

public class Parent 
{ 
    public Guid Id { get; set; } 

    public virtual ICollection<Child> Children { get; set; } 
} 
public class Child 
{ 
    public Guid Id { get; set; } 

    public Guid ParentId{ get; set; } 
    public virtual Parent Parent { get; set; } 
} 

И я ParentView где я посылаю Id Parent контролеру Ребенок с ActionLink, как это:

@Html.ActionLink("something", "ChildIndexMethod", "ChildController", new { parentId=item.Id}, null) 

При нажатии, мы идем в ChildIndexView и список всех детей в рамках Родительская модель. Оттуда, я хочу, чтобы иметь возможность создать нового ребенка под тем же Родитель. Чтобы создать нового ребенка, мне нужно предоставить ParentId для нового дочернего объекта. Как я могу получить этот ParentId и передать его Child?

Я сделал это:

if (Model.FirstOrDefault() != null) 
    { 
     @Html.ActionLink("New child", "NewChild", new { parentId = Model.FirstOrDefault().ParentId}) 
    } 
    else 
    { 
     //What to do if Model is null? 
    } 

Сначала я проверить, если модель не является нулевым. Если это не null, я беру объект FirstOrDefault из модели и передаю ParentId ребенку. Но он работает только в том случае, если есть дети уже под родителями. Если у детей нет родительских родителей, я не могу прочитать ParentId и, следовательно, возникла ошибка. Как я могу отправить ParentId дочернему элементу из этой позиции?

Я знаю, что это, вероятно, неправильный метод для достижения моей цели. Но я все еще учусь. Кроме того, я не смог найти ответ на SO. Любая помощь приветствуется.

Спасибо

ответ

0

Кажется, модель в детском просмотра является IEnumerable<Child>. У вас есть два варианта:

Определить новый ViewModel, который содержит список ребенка и ParentID:

public ChildListViewModel 
{ 
    public Guid ParentId {...} 
    public IEnumerable <Child> Children {...} 
} 

Используйте вид сумки

ViewBag.ParentId = parentId; 

Оба сделают ParentID доступны в ваш взгляд, даже если у вас нет детей

+0

Модель в Children View PagedList, но оба ваших метода были на месте. Спасибо – Nodios

+0

Итак, вместо этого на IEnumerable вы можете использовать PagedList. С уважением – tede24

Смежные вопросы