带有多个下拉列表和复选框组的ASP.NET MVC表单

时间:2010-07-06 13:51:24

标签: asp.net asp.net-mvc forms submit

我迷失了列表框的提交,其中选择了多个主题并带有一组复选框。

如果那是一个WebForm项目,对我来说不会有问题。

哪些最佳实践和一些代码示例显示在ASP.NET MVC2中正确提交表单,其中包含一组复选框和包含多个所选项目的列表框?

以下是表格的样本:

类别:   - 一组复选框

主题:   - 具有多个属性的列表框(multiple =“multiple”)

1 个答案:

答案 0 :(得分:1)

一如既往地定义视图模型:

public class MyModel
{
    public bool Check1 { get; set; }
    public bool Check2 { get; set; }

    public IEnumerable<SelectListItem> ListItems { get; set; }
    public string[] SelectedItems { get; set; }
}

接下来是控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new MyModel
        {   
            Check1 = false,
            Check2 = true,
            ListItems = new SelectList(new[]
            {
                new { Id = 1, Name = "item 1" },
                new { Id = 2, Name = "item 2" },
                new { Id = 3, Name = "item 3" },
            }, "Id", "Name")
        };
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(MyModel model)
    {
        // TODO: Process the model
        // model.SelectedItems will contain a list of ids of the selected items
        return RedirectToAction("index");
    }
}

最后是View:

<% using (Html.BeginForm()) { %>

    <div>
        <%: Html.LabelFor(x => x.Check1) %>
        <%: Html.CheckBoxFor(x => x.Check1) %>
    </div>

    <div>
        <%: Html.LabelFor(x => x.Check2) %>
        <%: Html.CheckBoxFor(x => x.Check2) %>
    </div>

    <div>
        <%: Html.ListBoxFor(x => x.SelectedItems, Model.ListItems) %>
    </div>

    <input type="submit" value="OK" />

<% } %>