2012-01-28 1 views
1

내가 모델로 DB에서 데이터를 검색하고mvc3는

예를 들어, 뷰에 전달하고자하는 모델에 DB에서 데이터를 채 웁니다 1) db 상태 테이블, 2 열 코드 및 텍스트가 있습니다. 2) 내 모델 :

public class state 
{ 
    public IEnumerable<SelectListItem> list { get; set; } 
    public string selected { get; set; } 
} 

3) 내가 목록에 상태 테이블에서 코드 및 텍스트 데이터를 배치 할 컨트롤러와 1로 선택하고 뷰

에 모델을 반환 세트 방법을 나는 것 컨트롤러에 루프를 작성하십시오.

답변

2
public class state 
{ 
    public List<SelectListItem> list { get; set; } 
    public string selected { get; set; } 

    public state() 
    { 
     SqlConnection DbConn = new SqlConnection(YourConnectionStringHere); 
     SqlCommand SelectStates = new SqlCommand(); 
     SelectStates.CommandText = "select code from state"; 
     SelectStates.Connection = DbConn; 

     DbConn.Open() 
     SqlDataReader ReadStates = SelectStates.ExecuteReader(); 

     while (reader.Read()) 
      list.Add(
       new SelectListItem() { Text = reader[0].ToString(), Value = reader[0].ToString() }); 

     DbConn.Close(); 

     list[0].Selected = true; 
    } 
} 

이상적으로, 위의 생성자가 수행하는 작업을 수행하기 위해 데이터 액세스 클래스를 만들 수 있지만 코드에 대한 일반적인 아이디어를 얻을 수 있습니다. 작업 방법에 관해서는

:

public ActionResult StateSelect() 
{ 
    state YourViewModel = new state(); 

    return View(YourViewModel); 
} 

상응하는보기 : 코드에 대한 너무 많은

@model state 

@* Add your other markup here *@ 

@Html.ListBoxFor(m => m.selected, Model.list) 
+0

들으, 수행 당신이 코드 및 텍스트 필드를 포함하는 모델을 만들기 위해 더 좋을 것 같아 내가 가진 것 대신에. 컨트롤러에서 목록을 생성하고 뷰로 전달하면됩니까? ... 또한 SQL 대신 linq를 사용하여 생성자를 수정하는 방법을 알고 싶습니다. 다른 옵션을 알고 싶습니다. 감사합니다 – Ben

+0

@ 벤 내 의견으로는, 컨트롤러 목록을 작성해서는 안됩니다. 그것은 모두 귀하의 뷰 모델에 의해 처리되어야합니다. 모델 생성과 관련하여 도메인에 필요한 데이터는 무엇입니까? 또한 일반적으로'SelectList'는 ViewModels을위한 것이고 (뷰와 관련된), 아마 당신도 그것을 나눠야 할 것입니다. –

+0

제가 무엇을하려고하는지 설명하겠습니다. 현재 데이터베이스에 상태 테이블이 있습니다. 목록 상자/ddl에 데이터를 표시하고 싶었고 데이터베이스 테이블과 같은 모델을 생성해야하는지, 아니면 가지고 있는지 확실하지 않았습니다. 내 모델에 목록이 들어 있습니다. 또한 EF를 사용하여 작업하려고했습니다. 내가하고 싶은 일이 의미가 있기를 바랍니다. – Ben

관련 문제