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]等等。最简单的方法是什么?请建议
在这种情况下,我要做的是接受@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>
}
希望对你有帮助