Asp.net MVC c#多个下拉列表绑定查看和保存

本文关键字:绑定 保存 下拉列表 net MVC Asp | 更新日期: 2023-09-27 17:54:04

假设我想显示多个下拉列表。值是相同的,但鉴于他们需要显示为名称的每个值和计数的所有值在下拉框中。请查看以下数据和需求样本。

ID 1、2、3、4、5

名称A, B, C, D, E

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

Asp.net MVC c#多个下拉列表绑定查看和保存

在这种情况下,我要做的是接受@Matteo1010的建议并创建一个视图模型。我最近不得不这样做,所以我有一个现成的解决方案。

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

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

现在你想要一个带有dropdown列表的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)

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

视图模型

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

希望对你有帮助