내 컨트롤러에서 전자 메일을 보내기위한 다양한 필터로 내보기에 사용될 두 개의 다른 목록과 함께 강력한 형식의 역할 목록을 생성하려고합니다. 나는 또한 내 컨트롤러에 두 개의 다른리스트를 전달하는 걸려 라로에서 쿼리를 작성하여 내가 역할 목록을 달성하는 것을 선호하지만'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; }
당신이 (viewbag 또는 뷰 모델에서) 사용할 필요가 SelectList sList = 새로운 SelectList (selectList, "Text", "Value", selected); – Emil
답변 해 주셔서 감사합니다.하지만 내 질문에 대한 답변이나 전혀 도움이되지 않습니다. 무슨 뜻인지 설명해 주시겠습니까? 이것이 두 번째 예제에서 작성한 특정 스타일의 쿼리 스타일에 어떻게 맞습니까? 그리고이 쿼리 내에서 필요한 방식으로 역할 테이블을 참조하는 데 어떻게 도움이됩니까? – Rob