Asp.net MVC C#Multiple Dropdown list绑定查看和保存

时间:2016-06-30 21:55:56

标签: c# asp.net-mvc

假设我想显示多个DropDownList。值相同但在视图中需要显示为每个值的名称和下拉列表中所有值的计数。请查看以下数据和要求样本。

ID 1,2,3,4,5

名称A,B,C,D,E

现在查看应创建5个下拉列表,如[A] ==== [1,2,3,4,5],[B] ==== [1,2,3,4,5]等等。什么是最简单的方法。请建议

2 个答案:

答案 0 :(得分:1)

在这种情况下,我会采取@ Matteo1010的建议,并创建一个视图模型。我最近必须这样做,所以我有一个随时可用的解决方案。

您首先要创建一个包含下拉列表所需值的模型;通常这些就像是

public class DropDownA
{
   public int id {get;set;}
   public string value {get;set;}
   public bool IsSelected{get;set;}
}

现在你想要一个带有DropDownA列表的ViewModel

public class MyViewModel
{
   List<DropDownA> dropDownA {get;set;}
   public IEnumerable<SelectListItem> ddaSLI { get { return new SelectList(dropDownA, "id", "value"); } }
}

当然,您必须初始化列表

for(int i = 0; i < YourItems.Count; i++)
{
    dropDownA.Add(new DropDownA { id = i, value = "something", IsSelected = false});
}

在视图中,它易于渲染,并且会有模型绑定

@Html.DropDownListFor(model => model.id, Model.ddaSLI)

只要重复你想要的任何其他下拉菜单,一切都应该没问题。 :)

答案 1 :(得分:0)

视图模型

public class CustomViewModel
{
    public string A { get; set;}
    public string B { get; set;}
    public string C { get; set;}
    public string D { get; set;}
    public string E { get; set;}
}

控制器

public ActionResult Test()
    {
        List<SelectListItem> lista = new List<SelectListItem>();

        lista.Add(new SelectListItem()
        {
            Text = "1",
            Value = "1"
        });
        lista.Add(new SelectListItem()
        {
            Text = "2",
            Value = "2"
        });
        lista.Add(new SelectListItem()
        {
            Text = "3",
            Value = "3"
        });
        lista.Add(new SelectListItem()
        {
            Text = "4",
            Value = "4"
        });
        lista.Add(new SelectListItem()
        {
            Text = "5",
            Value = "5"
        });

        ViewBag.list = lista;

        return View(new CustomViewModel());
    }

    [HttpPost]
    public ActionResult Test(CustomViewModel customViewModel)
    {

        //your code

        //if return the same view create again the List<SelectListItem>

        return View(customViewModel);
    }

视图

@model test.Models.CustomViewModel
@{
ViewBag.Title = "Test";

List<SelectListItem> list = ViewBag.list as List<SelectListItem>;
}

<h2>Test</h2>

@using (Html.BeginForm())
{
<div>
@Html.DropDownListFor(model => model.A, new SelectList(list))
</div>

<div>
    @Html.DropDownListFor(model => model.B, new SelectList(list))
</div>

<div>
    @Html.DropDownListFor(model => model.C, new SelectList(list))
</div>

<div>
    @Html.DropDownListFor(model => model.D, new SelectList(list))
</div>

<div>
    @Html.DropDownListFor(model => model.E, new SelectList(list))
</div>
}

希望这可以帮到你