2014-08-28 3 views
0

이 질문에 대한 답변을 찾는 데 어려움을 겪고 있습니다 (Google, StackOverflow 및 ASP.NET).ASP.NET MVC 4 DropdownListFor, DBContext에서 LINQ를 사용하여 채우기?

// Model 
public IEnumerable<SelectListItem> State { get; set; } 

// View 
@Html.DropDownListFor(m => m.State, ????) 

// Controller 

using (var dbcontext = MyDbContext()) { 

    // ?? 
} 

return View(model); 

은 내가 DBContext에서 LINQ를 사용하여 dropdownlistfor MVC를 채우는 방법을 완전한 손실에 있어요. DBContext 것을 이해하고 하나의 설정이 있습니다. linq 쿼리를 작성한 다음 그 결과 (LIST?)를 DropDownListFor 도우미로 전달하는 방법에 대해 명확하지 않습니다. MS SQL을 사용하고 있으며 상태 표 (ID, 이름)가 있습니다.

+0

http://odetocode.com/blogs/scott/archive/2013/03/11/dropdownlistfor-with -asp-net-mvc.aspx, http://agilewarrior.wordpress.com/2012/12/13/how-to-simple-html-dropdownlistfor-mvc-net/, http://peternewhook.com/2013/ 02/asp-net-mvc-selectlist-selectedvalue-dropdownlistfor /, http://hammadk.com/dropdownlistfor-example-c/ 등 자세한 질문이 있으십니까? – Claies

+0

첫번째 것을 보았고 혼란 스럽습니다. 구체적인 DBContexts 함께 Linq 사용하고 있습니다. 첫 번째 링크에는 몇 가지 예가 있지만, 나에게 의미가 없습니다. –

답변

3

첫째, 당신이 모델에서, 당신은에 바인딩 원하는 속성과

public class MyViewModel 
{ 
    public string StateID { get; set; } 
    .... // other properties 
    public SelectList StateList { get; set; } 
} 
컨트롤러

// Initialise view model 
MyViewModel model = new MyViewModel(); 
// Select the data to display (lots of ways to do this) 
var states= from s in dbcontext.States 
       where s.SomeProperty == someValue // if you want to filer the results 
       select s 
// Assign select list (this sets the value to the ID property and the display text to the Name property) 
model.StateList = new SelectList(states, "ID", "Name"); 
// and if you want to set a default 
model.StateID = "NY"; 
return View(model); 

에서

및 뷰 선택의 목록을 포함

@Html.DropDownListFor(m => m.StateID, Model.StateList) 

이 경우 <select>에 상태의 전체 이름이 표시되고 st 재산 ATES ID 값 빠른 검색이 발견 StateID

+0

나는이 정확한 답변을 다른 SO 게시물에서 보았으며 조금 혼란 스러웠다. 모델에는 CategoryID 및 CategoryList가 있습니다. 이러한 속성은 내 State 속성과 어떤 관련이 있습니까? State 속성을 IEnum에서 SelectList로 변경해야합니까? 클릭하기 위해 게시 한 내용을 기반으로 예제를 볼 필요가 있다고 생각합니다. –

+0

귀하의 모델에 대해 잘 모르기 때문에 방금 사례를 들려 주셨습니다. 'State' typeof'string'이고 상태리스트에서 선택하고 싶습니다.'State'는'int ID'와'string Name' 속성을 가진 복합 속성입니까? –

+0

상태에는 상태에 대한 두 문자 abbrv 인 ID 값이 있고 이름은 (자연스럽게) 상태의 전체 이름입니다. 둘 다 문자열입니다. –

0
//dbcontext 

using (var dbcontext = MyDbContext()) 
{ 
Dictionary<string, string> states = dbcontext .States.ToDictionary(t => t.StateID.ToString(), t => t.StateName.ToString()); 

} 

// in controller attach this dictionary to ViewBag: 

ViewBag.States=states; 

//보기

@Html.DropDownListFor(m => m.State, new SelectList(ViewBag.States, "Key", "Value")) 
+0

이 작업을 수행하고 클릭을 시작하는 방법은 여러 가지가 있습니다. 귀하의 예제는 모델을 고려하지 않는 것 같습니까? 아니면 내가 잘못 읽은거야? –

+0

그럼 당신은 모델에서 모델 의 속성을 만들 수 있습니다 사전 <문자열, 문자열> 상태 {얻을; 설정;} // 및 컨트롤러 : model.states의 = 상태를; // dbcontext에서 반환 // view.states를 Model.states로 대체합니다. – Tasawar