2012-01-28 8 views
1

モデルからデータを取得してビューに渡したいmvc3はデータベースからモデルにデータを移入する

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

THX、あなたはコードとテキストフィールドを含むモデルを作成する方が良いだろうと思いますか私が持っているものの代わりに。コントローラでリストを生成し、それをビューに転送しますか?... また、SQLの代わりにLinqを使用する場合、コンストラクタをどのように変更すればよいでしょうか?感謝 – Ben

+0

@ベン私の意見では、コントローラは、リストを作成してはいけません。それはすべてあなたのビューモデルによって処理されるべきです。モデル作成に関しては、ドメインにはどのようなデータが必要ですか?また、通常は 'SelectList'はViewModels(ビューに関連するもの)のため、それを分割する必要があります。 –

+0

私は何をしようとしているのか説明しましょう。現在、データベースに状態テーブルがあり、リストボックス/ ddlにデータを表示したかったので、データベーステーブルのようなモデルを作成するか、私のモデルはリストを含んでいます。また、EFを使用してそれをしようとしたかった。私は自分がしたいことが意味をなさないことを願っています。 – Ben

関連する問題