2014-11-06 4 views
1

결과를 전달하는이 Index 작업 메서드가 있는데 동일한 인덱스 작업 메서드를 통해 내 테이블을 정렬하고 싶습니다. 어떻게 값을 모두 전달할 수 있습니까? 전망. 여기 내 인덱스의 조치 방법ASP.NET MVC 응용 프로그램에서 Entity Framework로 정렬

public ActionResult Index(string sortOrder) 
{ 
    var userCount = db.CountUser(); 

    return View(userCount.ToList()); 
} 

이며, 여기에 내 분류 코드 :

public ActionResult Index(string sortOrder) 
{ 
    var userCount = db.CountUser(); 

    ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : sortOrder; 

    var teams = from t in db.Teams 
       select t; 

    switch ((string)ViewBag.NameSortParm) 
    { 
     case "name_desc": 
      teams = teams.OrderByDescending(t => t.TeamName); 
      break; 

     default: 
      teams = teams.OrderBy(t => t.TeamName); 
      break; 
    } 

    ViewBag.Teams = teams.ToList(); 

    return View(userCount.ToList()); 
} 

그리고보기에 ViewBag.Teams를 사용 : 당신은에 의해하는 것을 달성 할 수

ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : ""; 

var teams = from t in db.Teams 
      select t; 
switch (sortOrder) 
{ 
    case "name_desc": 
     teams = teams.OrderByDescending(t => t.TeamName); 
     break; 

    default: 
     teams = teams.OrderBy(t => t.TeamName); 
     break; 
} 
+0

에보기에서 모델 유형을 변경해야합니다 (:

그러나, 나는 생각에 대한 적절한 솔루션은 컬렉션을 포함하는 적절한 모델을 만드는 것 userCount.ToList()); ViewBag.Teams = teams 추가; 그러면 두 결과를 모두보기 – Monah

+0

에 보낼 수 있습니다. ** userCount.ToList() ** 및 정렬 된 ** 팀 **이 모두 색인보기로 전달되기를 원하십니까? – Vladimirs

+0

무엇이 오류입니까? – Monah

답변

0

.

public class MyIndexViewModel 
{ 
    public List<CountUser> CountUsers { get; set; } 
    public List<Team> Teams { get; set; } 
} 

public ActionResult Index(string sortOrder) 
{ 
    var userCount = db.CountUser(); 

    ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : sortOrder; 

    var teams = from t in db.Teams 
       select t; 

    switch ((string)ViewBag.NameSortParm) 
    { 
     case "name_desc": 
      teams = teams.OrderByDescending(t => t.TeamName); 
      break; 

     default: 
      teams = teams.OrderBy(t => t.TeamName); 
      break; 
    } 

    return View(new MyIndexViewModel { CountUsers = userCount.ToList(), Teams = teams.ToList() }); 
} 

또한 당신이 돌아보기 전에 MyIndexViewModel

+0

var userCount = db.CountUser(); 여기에 실제로 저장 프로 시저 CountUser() 호출; 두 번째로 스위치를 동적 표현식 –

+0

에 전달할 수 있습니다. ** db.CountUser() **는 IEnumerable을 반환 할 때까지 실제로 ** 당신이 ** ToList **를 호출 할 수 있습니다. 네, 맞습니다. 바로 사용할 수는 없지만 ** switch ((string) ViewBag.NameSortParm) ** 작동 할 것입니다. – Vladimirs

+0

고맙습니다 이제이 솔루션을 마친 후 스위치 ((문자열) ViewBag.NameSortParm) @ Html.ActionLink ("팀 이름", "인덱스 ", 새로운 {sortOrder = ViewBag.NameSortParm}) 보기 가방에이 태그를 불러야합니다. –

관련 문제