MVC中的可变ViewBag名称
本文关键字:ViewBag 名称 MVC | 更新日期: 2023-09-27 18:06:04
基本上,我正在一个项目上工作,我不确定我如何能把一个变量ViewBag的名字,我想做的,因为所有下面的代码是在一个while循环内。
List<SelectListItem> PermissionLevels = new List<SelectListItem>();
PermissionLevels.Add (new SelectListItem {//skipping this section, not relevant
ViewBag.@ContactName = PermissionLevels;
然后在foreach循环的视图中:
@Html.DropDownList(_CurrentPermissions.Name)
(是的,_CurrentPermissions是它所在位置的正确名称)
我真正想做的是让@ContactName成为一个变量但我不知道怎么做,这是我最好的猜测我似乎找不到任何方法
你不能这么做。不要害怕!有一个更好的方法来处理这个问题。
如果你需要一个对象的List
返回到你的视图,只需将列表存储在ViewBag
中或将其作为模型的属性存储。
因为它听起来像你在建立一个每个用户的权限列表,它可能看起来像这样:
var permissionsDictionary = new Dictionary<string, List<SelectListItem>>();
foreach (var user in users) {
var listItems = new List<SelectListItem>();
listItems.Add(new SelectListItem() {
//Do your stuff!
});
permissionsDictionary.Add(user.Name, listItems);
}
model.Permissions = permissionsDictionary;
也许您想在ViewBag
中包含的是按名称索引的List<SelectListItem>
的Dictionary
?
Dictionary<string, List<SelectListItem>> Permissions =
new Dictionary<string, List<SelectListItem>>();
List<SelectListItem> PermissionLevels = new List<SelectListItem>();
Permissions[ContactName] = new SelectListItem( ... ) // Repeat for each name
ViewBag.Permissions = Permissions;
,然后在foreach循环内的视图中:
@Html.DropDownList(Permissions[_CurrentPermissions.Name])
在索引到字典之前不要忘记检查键是否存在。您还可以查看SelectList
类,它是专门设计用于在HTML.DropDownList()
中显示的SelectListItems
的集合。