MVC3 - How to correctly use @html.checkbox?

后端 未结 2 517
不思量自难忘°
不思量自难忘° 2021-01-19 18:47

I\'m new to MVC3 and I can\'t figure out how to use checkboxes in MVC. I have a bunch of text in my view like

text1
text2
text3
text4
text5

submitbutton


        
相关标签:
2条回答
  • 2021-01-19 18:48

    Create a ViewModel with all of your values. Populate the ViewModel and send it to the view. When something is checked, you'll know what's what on the post.

    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
            }
        }
    }
    

    Basically ViewModels are your friend. You want to have a separate ViewModel for each View, and it's what gets passed back and forth between the Controller and the View. You can then do your data parsing either in the controller, or (preferably) in a service layer.

    Additional Reference:
    Should ViewModels be used in every single View using MVC?

    0 讨论(0)
  • 2021-01-19 18:57

    What i would do in this situation is to make those items to be a property of my ViewModel.

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

    and in my Get Action method i will return this ViewModel to my View

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

    and in my View

    @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" />
    }
    

    Now this property value will be available in your post action method

    [HttpPost]
    public ActionResult Edit(MyViewModel objVM)
    {
     //Here you can access the properties of objVM and do whatever
    
    }
    
    0 讨论(0)
提交回复
热议问题