我在Razor中有以下声明:
ViewBag.RolesEdit
,它会导致在页面加载时显示如下的下拉列表:
当我点击下拉箭头时,我看到:
基本上,用户角色是重复的。我怎样才能改变它,以便它不是创建一个新的重复元素,而是默认为它应该是的元素?基本上,由于ViewBag.CurrentUserRole
是一个列表,并且function drawBasic(object,id,title) {
var array = ['publisher','price','date'];
var data = new google.visualization.DataTable();
for(var j = 0; j < array.length; j++){
if(array[j] == 'publisher'){
data.addColumn('string', array[j]);
} else if (array[j] == 'revenue'){
data.addColumn('number', array[j]);
} else if(array[j] == 'date'){
data.addColumn('date', 'X');
}
}
$.each(object,function (key,val) {
var temp = [];
var outterArray = [];
var day = new Date(key);
for(var y = 0; y < val.length; y++){
for(var x = 0; x < array.length; x++){
if(array[x] =='publisher'){
temp.push(val[y][array[x]]);
} else if(array[x] != 'date' && array[x] !='publisher'){
temp.push(parseObjToNum(val[y][array[x]]));
}
}
temp.push(day);
outterArray.push(temp);
temp = [];
}
data.addRows(outterArray);
});
var options = {
title: title,
hAxis: {
"format": "y-MM-d"
}
};
var chart = new google.visualization.ColumnChart(document.getElementById(id));
var formatter = new google.visualization.NumberFormat({fractionDigits: true});
formatter.format(data, 1, 2, 3);
chart.draw(data, options);
}
保证有一个元素恰好等于上述列表中的一个项目,我如何循环列表以相互比较并设置默认?
谢谢。
答案 0 :(得分:1)
使用Html.DropDownList
辅助方法时,要将一个选项设置为预先选择,您只需将该选项的值设置为ViewBag字典,并使用相同的密钥生成SELECT元素。
@Html.DropDownList("SelectedRole", ViewBag.RolesEdit as List<SelectListItem>)
假设您的操作方法是将ViewBag.SelectedRole
设置为您要选择的选项的value
。
ViewBag.RolesEdit= new List<SelectListItem>{
new SelectListItem { Value="Administrator", Text="Administrator"},
new SelectListItem { Value="Employees", Text="Employees"},
new SelectListItem { Value="RegularUser", Text="Regular User"},
}
ViewBag.SelectedRole ="RegularUser";
return View();
如果您希望将Html.DropDownListFor
辅助方法与强类型视图和视图模型一起使用,则可以按照以下文章进行操作
What is the best ways to bind @Html.DropDownListFor in ASP.NET MVC5?