2016-09-30 1 views
0

내 컨트롤러에서 전자 메일을 보내기위한 다양한 필터로 내보기에 사용될 두 개의 다른 목록과 함께 강력한 형식의 역할 목록을 생성하려고합니다. 나는 또한 내 컨트롤러에 두 개의 다른리스트를 전달하는 걸려 라로에서 쿼리를 작성하여 내가 역할 목록을 달성하는 것을 선호하지만'SelectListItems'목록을 생성하는 목록으로 ViewModel을 사용하여 인스턴스화 한 테이블을 Linq를 사용하여 참조하는 올바른 방법은 무엇입니까?

var viewModel = new ListViewModel 
     { 
      Roles = db.Roles.OrderBy(r => r.Name).ToList().Select(rr => new SelectListItem { Value = rr.Id.ToString(), Text = rr.Name }).ToList(), 
     }; 

: 나는 다음을 사용하여 역할 목록을 생성 할 수 있습니다 알고 있어요 방법은 다음

var viewModel = db.Roles 

      .Select(x => new SendGroupEmailViewModel 
      { 
       Roles = x.Select(rr => new SelectListItem { Value = rr.Id.ToString(), Text = rr.Name }).ToList(), 

      }; 

그때 동일한 쿼리의 일환으로 내 다른 두 개의 목록을 얻을 수 그런 식으로, 이전 방법과 반대로 그들은 DB를 효과적으로 별도의 쿼리를해야 할 곳. 분명히 위에 무엇이 작동하지 않습니다, 나는 할 수 없습니다. 역할 = x.Select 작성하여 역할 테이블을 선택하십시오.

내 질문에 내가 할 수없는 이유는 무엇입니까? 그리고 위에서 설명한 것과 비슷한 방법으로 역할 테이블을 쿼리 할 때 올바른 방법은 무엇입니까?

varMyel = db.Roles 여야 만하는 이유는 무엇이든 MVC에서 ID를 설정하는 방법으로 인해 ID/이름 역할 목록에 액세스 할 수 없기 때문입니다. 목록을 얻는 다른 방법이 있다는 것을 알고 있습니다.이 특정 방법으로 어떻게 수행 할 수 있는지 알고 싶습니다.

편집 - 다음과 같이 나는 나의 뷰 모델의 역할이 있음을 추가해야합니다 :

public IEnumerable<SelectListItem> Roles { get; set; } 
+0

당신이 (viewbag 또는 뷰 모델에서) 사용할 필요가 SelectList sList = 새로운 SelectList (selectList, "Text", "Value", selected); – Emil

+0

답변 해 주셔서 감사합니다.하지만 내 질문에 대한 답변이나 전혀 도움이되지 않습니다. 무슨 뜻인지 설명해 주시겠습니까? 이것이 두 번째 예제에서 작성한 특정 스타일의 쿼리 스타일에 어떻게 맞습니까? 그리고이 쿼리 내에서 필요한 방식으로 역할 테이블을 참조하는 데 어떻게 도움이됩니까? – Rob

답변

0

컨트롤러

var oList = db.Roles.Select(x => new SendGroupEmailViewModel 
       { 
        Roles = x.Roles.Select(rr => new SelectListItem { Value = rr.Id.ToString(), Text = rr.Name }).ToList(); 

    ViewData.myList = new SelectList(oList, 

       }, 
        "Value", "Text", 15); // 15 = selected item or you can omit this value 

보기

<%=Html.DropDownList("myList") %> 
+0

답변 해 주셔서 감사하지만 작동하지 않습니다. 내 문제는 직접 ".Select"그 역할을 쿼리 테이블을 사용하여 테이블에 있습니다. 그래서 x.Roles.Select 또는 x.Select 둘 다 작동하지 않습니다. 응답의 ViewData 부분이 필요하지 않도록 적절한 목록을 생성 할 수 있습니다. – Rob

+0

어떤 오류/결과를 얻으십니까? "var oList = db.Roles select oRole의 oRole에서"시도 할 수 있습니까? – Emil

+0

.Select는 컨텍스트에 존재하지 않습니다. x 나열 할 수있는 쿼리 유형을 사용하여 선택할 수 없습니다. 다른 제안 주셔서 감사하지만 내 질문에 설명하려고, 나는 이미 정확히 첫 번째 쿼리를 사용하여 원하는 목록을 얻을 수 내 질문에 순전히 두 번째 쿼리의 특정 스타일을 사용하여 역할 테이블을 참조하는 방법에 대한 무엇입니까 두 번째 쿼리와 다르게 작성되었다고 제안했습니다. 간단히 말해서, 내 문제는 결과를 얻지 못하고, 내 질문의 두 번째 예제에서 사용 된 특정 형식을 사용하여 결과를 얻는 것입니다. – Rob

관련 문제