2012-03-25 13 views
4

MVC3が新しく、MVCでチェックボックスを使用する方法を理解できません。 私はMVC3 - @ html.checkboxを正しく使うには?

text1 
text2 
text3 
text4 
text5 

submitbutton 

このテキストはどのモデルそのわずかプレーンテキストに関連していないように私のビュー内のテキストの束を持っています。各項目のチェックボックスとコントローラへのリンクを設定して、ユーザがチェックボックスの値の一部を選択して送信ボタンをクリックすると、コントローラが選択された項目を選択するようにしたいと思います。 私は、@ html.checkbox(「テキスト」+インデックス)を使用してみましたと

[HttpPost] 
public ActionResult controller(List<string> list) 
{ 
} 

するしかし、それは選択された項目のリストをピックアップしていないコントローラを試してみました。私が間違ってやっていることや別のやり方を教えてもらえますか?

+1

booleanプロパティとstringプロパティを関連付けるViewModel。 ViewModelsはあなたの友人です。 –

答えて

6

すべての値を含むViewModelを作成します。 ViewModelに移入してビューに送信します。何かがチェックされると、あなたはその投稿の何が何であるかを知るでしょう。

public class MyModelViewModel 
{ 
    public List<CheckBoxes> CheckBoxList {get; set;} 
    // etc 
} 

public class CheckBoxes 
{ 
    public string Text {get; set;} 
    public bool Checked {get; set;}   
} 
[HttpPost] 
public ActionResult controller(MyModelViewModel model) 
{ 
    foreach(var item in model.CheckBoxList) 
    { 
     if(item.Checked) 
     { 
      // do something with item.Text 
     } 
    } 
} 

基本的のviewmodelsはあなたの友達です。各ビューに別々のViewModelを持たせたいと思っています。それは、コントローラとビューの間を行き来するものです。次に、コントローラーで、または(好ましくは)サービスレイヤーで、データ解析を実行できます。

追加リファレンス:
Should ViewModels be used in every single View using MVC?

8

私はこのような状況でどうなるのかは、それらの項目が私のViewModelのプロパティであることをすることです。

public class MyViewModel 
{ 
    public bool text1 { set;get} 
    public bool text2 { set;get;} 
    public bool SomeMeaningFullName { set;get;} 
    // Other properties for the view 
} 

と私のGETアクションメソッドに私は私のビューには、このビューモデルを返します

public ActionResult Edit() 
{ 
    MyViewModel objVM=new MyViewModel(); 
    return View(objVM); 
} 

と私の見解では

@model MyViewModel 

@using (Html.BeginForm("Edit","yourcontroller")) 
{ 
    @Html.LabelFor(Model.text1) 
    @Html.CheckBoxFor(Model.text1) 
    @Html.LabelFor(Model.text2) 
    @Html.CheckBoxFor(Model.text2) 

    <input type="submit" value="Save" /> 
} 

今、このプロパティの値は、あなたのポストのアクションで利用できるようになります方法

[HttpPost] 
public ActionResult Edit(MyViewModel objVM) 
{ 
//Here you can access the properties of objVM and do whatever 

} 
関連する問題