Return List from view to controller in MVC 3

前端 未结 3 577
梦毁少年i
梦毁少年i 2020-12-11 08:54

I currently have an object Tag defined as follows:

public class Tag
{
    public string Name { get; set; }
}

Now, this is a co

3条回答
  •  失恋的感觉
    2020-12-11 09:07

    Use Editor Templates

    For having the Checkbox, Add another Proeprty to your Tag classs to specify whether it is selected or not.

    public class Tag
    {
        public string Name { get; set; }
        public bool IsSelected { set; get; }
    }
    

    Now from your GET Action, you can set a List of Tags in your Model's Tags Property and sent it to the View.

    public ActionResult AddTag()
    {
        var vm = new MyModel();
    
        //The below code is hardcoded for demo. you mat replace with DB data.
        vm.Tags.Add(new Tag { Name = "Test1" });
        vm.Tags.Add(new Tag { Name = "Test2" });
    
        return View(vm);
    }
    

    Now Let's create an Editor Template, Go to The View/YourControllerName and Create a Folder called EditorTemaplates and Create a new View there with the same name as of the Property type ( Tag.cshtml).

    enter image description here

    Add this content to the new editor template now.

    @model Tag
    

    @Model.Name : @Html.CheckBoxFor(x => x.IsSelected)
    @Html.HiddenFor(x=>x.Name)

    Now in your Main View, Call your Editor template using the EditorFor Html Helper method.

    @model MyModel
    

    AddTag

    @using (Html.BeginForm()) {
    @Html.LabelFor(m => m.Name) @Html.TextBoxFor(m => m.Name)
    @Html.EditorFor(m=>m.Tags)
    }

    Now when You Post the Form, Your Model will have the Tags Collection where the Selected Checkboxes will be having a True value for the IsSelected Property.

     [HttpPost]
    public ActionResult AddTag(MyModel model)
    {
       if(ModelState.IsValid)
       {
          //Check for model.Tags collection and Each items IsSelected property value.
          //Save and Redirect(PRG pattern)
       }
       return View(model);
    }
    

    Like this

    enter image description here

提交回复
热议问题