2013-05-05 2 views
0

Так что я делаю то, что я показываю список категорий на странице, и каждая категория содержит подсписку категорий. У меня есть контроллер, и он возвращает список категорий без подписок категорий. как я могу получить подсписку, используя тот же контроллер.Возвращение двух наборов действий в одном контроллере

Контроллер:

public CourseIndexVw Get(int id) 
    { 
     var _types = new ElementTypesService().GetElementModelsForCourseIndex(id, WebSecurity.CurrentUserId); 
     var _courseIndexbyTypesVw = new CourseSectionsControllerHelper().CourseIndexTypeVw(id); 
     _courseIndexbyTypesVw.Types = _types.ToList(); 
     var _activeType = _courseIndexbyTypesVw.Types.First(); 
     _courseIndexbyTypesVw.ActiveId = _activeType != null ? _activeType.Id : -1; 
     return _courseIndexbyTypesVw; 
    } 

GetElementModelsForCourseIndex:

public List<ElementModelForCourseIndex> GetElementModelsForCourseIndex(int elementId, int userId, int depthLevel = 2) 
     { 
      List<ElementModelForCourseIndex> TypesName; 
      ElementType type; 
      using (var db = DataContextManager.AleStoredProcsContext) 
      { 

       TypesName = db.GetElementModelsForCourseIndex<ElementModelForCourseIndex>(elementId, userId, r => new ElementModelForCourseIndex{ 
         Id = ElementsModelsForCourseIndexMap.Id(r), 
         Identity = ElementsModelsForCourseIndexMap.Identity(r) 
        }).OrderBy(n=>n.Identity).ToList(); 
      } 
      foreach (ElementModelForCourseIndex typeContent in TypesName) 
      { 
       typeContent.Children = GetElementChildrenModelsForCourseIndex(elementId, userId, type.ModelId, depthLevel); 
      } 
     } 

GetElementChildrenModelsForCourseIndex:

public List<ElementModelForCourseIndex> GetElementChildrenModelsForCourseIndex(int elementId, int userId, ElementType typeId, int depthLevel = 2) 
    { 
     using (var db = DataContextManager.AleStoredProcsContext) 
     { 
      return db.GetElementWithCalendarAndPermsByModel<ElementModelForCourseIndex>(elementId, userId, typeId.Id, r => new ElementModelForCourseIndex 
      { 
       IdentityName = ElementsModelsForCourseIndexMap.IdentityName(r), 
       ValueString = ElementsModelsForCourseIndexMap.ValueString(r), 
       TimeReleased = ElementsModelsForCourseIndexMap.TimeReleased(r), 
       TimeDue = ElementsModelsForCourseIndexMap.TimeReleased(r) 
      }).OrderBy(i => i.IdentityName).ToList(); 
     } 
    } 

UPDATE Текущая проблема связана с typeContent.Children = GetElementChildrenModelsForCourseIndex(elementId, userId, type.ModelId, depthLevel); Ошибка, которую я получаю: метод переопределения имеет неверные аргументы Любая помощь приветствуется, и если мне не хватает какой-либо информации, дайте мне знать. Благодаря!

ответ

1

Вы можете изменить свою модель и добавить children свойство:

public class ElementModelForCourseIndex 
{ 
    // *snip* your code 
    public List<ElementModelForCourseIndex> Children {get; set;} 
} 

Вы можете либо получить его в свой текущий GetElementModelsForCourseIndex или использовать вас вспомогательный метод как это:

public List<ElementModelForCourseIndex> GetElementModelsForCourseIndex(int elementId, int userId, int depthLevel = 2) 
    { 
     List<ElementModelForCourseIndex> courses; 
     using (var db = DataContextManager.AleStoredProcsContext) 
     { 
      courses = db.GetElementModelsForCourseIndex<ElementModelForCourseIndex>(elementId, userId, r => new ElementModelForCourseIndex{ 
        Id = ElementsModelsForCourseIndexMap.Id(r), 
        Identity = ElementsModelsForCourseIndexMap.Identity(r) 
       }).OrderBy(n=>n.Identity).ToList(); 
     } 
     for each(ElementModelForCourseIndex course in courses) 
     { 
      // here you are filling the Children. 
      //You need to check if the parameters are the correct ones. 
      // Since you haven't shown the actual model class, I'm only guessing the parameters 
      course.Children = GetElementChildrenModelsForCourseIndex(elementId, userId, depthLevel); 
     } 
     return courses; 
    } 
+0

Спасибо - я буду идите и попробуйте и дайте знать. – Masriyah

+0

Итак, для 'course.Children' я должен перейти в' typeId', который имеет тип 'ElementType' - как я могу передать это правильно для' GetElementChildrenModelsForCourseIndex' – Masriyah

+0

Это зависит от вашей ситуации/модели/требования к домену. В комментарии выше этой строки я сказал, что вам нужно разобраться в этом, потому что мы не можем знать – Kenneth

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