C# 如何用列表填充多选列表<;字符串>;和列表<;int>;?
在我看来,我希望有一个列表框,其中填写了多选列表。My viewmodel具有MultiSelect的以下属性:C# 如何用列表填充多选列表<;字符串>;和列表<;int>;?,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,在我看来,我希望有一个列表框,其中填写了多选列表。My viewmodel具有MultiSelect的以下属性: public List<int> SelectedID { get; set; } public List<string> Names { get; set; } public List<int> ID { get; set; } public List SelectedID{get;set;} 公共列表名称{get;se
public List<int> SelectedID { get; set; }
public List<string> Names { get; set; }
public List<int> ID { get; set; }
public List SelectedID{get;set;}
公共列表名称{get;set;}
公共列表ID{get;set;}
我不想让对象出现在我的viewmodel中,这就是为什么我使用字符串和int的列表
在我的控制器中,我创建viewModel并用从数据库中获取的数据填充列表
myViewModel viewModel = new myViewModel();
viewModel.ID = new List<int>();
viewModel.Names = new List<string>();
foreach(Var o in myData)
{
viewModel.ID.Add(o.Id);
viewModel.Names.Add(o.Name);
}
return View(viewModel);
myViewModel viewModel=新的myViewModel();
viewModel.ID=新列表();
viewModel.Names=新列表();
foreach(myData中的Var o)
{
viewModel.ID.Add(o.ID);
viewModel.Names.Add(o.Name);
}
返回视图(viewModel);
但在我的viewmodel中,我不知道如何将其插入我的multiselect中。通常情况下,你会在列表中列出你想通过的对象,但我没有,在我的情况下是分开的
我知道您可以使用ViewBag或ViewData来传递整个数据列表,但在我工作的地方,不希望使用它
我考虑的另一种方法是在viewmodel中创建一个列表,但我不知道这是否被视为在MVC中编写代码的正确方法
我将非常感谢您的反馈,谢谢 你到底为什么不使用这个物体
new SelectList(myData,“Id”,“Name”)
我以前使用过对象方式,但据我的一些同事说,在viewmodel中对对象(模型)进行编码是不安全的。什么当然是。在任何情况下,查看模型都应该包含SelectList
的属性,例如public SelectList MyItems{get;set;}
并在控制器中分配它-model.MyItems=new SelectList(myData,“Id”,“Name”)
,然后在查看@Html.ListBoxFor(m=>m.SelectedID,model.MyItems)
谢谢。看起来简单的方法也是正确的方法。