有人可以在下面的代码中为我提供帮助,它在视图上不显示任何内容
List<string> oo = ViewBag.oox;
IEnumerable<SelectListItem> obj = new List<SelectListItem>(oo.Select(ch => new SelectListItem { Text = ch, Value = ch }));
Html.DropDownList("xyz", obj);
foreach (var item in obj)
{
@item.Value
}
答案 0 :(得分:2)
假设Vector{Vector{Vector{...{T}}}}
中包含字符串列表,则应在代码块外部调用ViewBag.oox
方法。
此外,您不需要显式的DropDownList
构造函数(不是导致下拉菜单无法呈现的原因)。 List<string>
方法返回一个IEnumerable,您可以将其用于辅助方法调用。
Select
@{
List<string> oo = ViewBag.oox;
var obj = oo.Select(ch => new SelectListItem { Text = ch, Value = ch });
}
@Html.DropDownList("xyz", obj)
方法返回SELECT元素标记的DropDownList
。在代码块中调用它时,您不会在任何地方使用该方法的输出。当您在带有MvcHtmlString
前缀的代码块之外进行调用时,razor将使用输出(HTML标记)并将其用于呈现页面的特定部分。
因此,出于好奇,如果您绝对要在代码块内调用该方法。您可以存储方法调用的结果,并在外部使用它来呈现它。
@
理想情况下,应该遵循第一种方法,在代码块之外调用该方法。
请记住,如果@{
List<string> oo = ViewBag.oox;
var obj = oo.Select(ch => new SelectListItem { Text = ch, Value = ch });
MvcHtmlString selectMarkup = Html.DropDownList("xyz", obj);
}
@selectMarkup
返回一个意外值,则在其上调用ViewBag.oox
方法时,代码将崩溃。因此在使用前进行空检查是安全的。考虑使用强类型视图模型方法代替ViewBag / ViewData来传输此数据。
答案 1 :(得分:1)
您要在下面的代码中将<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.min.js"></script>
<div id="canvas-holder"><canvas id="chart-area"></canvas></div>
添加到其他新的List<SelectListItem>
实例中,这是不显示项目的主要原因:
List<SelectListItem>
正确的方法是像这样直接使用IEnumerable<SelectListItem> obj = new List<SelectListItem>(oo.Select(ch => new SelectListItem { Text = ch, Value = ch }));
:
Select
然后在@{
List<string> oo = ViewBag.oox;
List<SelectListItem> obj = oo.Select(ch => new SelectListItem { Text = ch, Value = ch });
}
或DropDownList
中使用它:
DropDownListFor