下拉列表不显示 View MVC 上的数据
Dropdown does not display data on View MVC
谁能帮我写下面的代码,它在视图中没有显示任何内容
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
}
假设 ViewBag.oox
中有一个字符串列表,您应该在代码块之外调用 DropDownList
方法。
此外,您不需要显式 List<string>
构造函数(不是您的下拉列表不呈现 thoughg 的原因)。 Select
方法 returns 一个 IEnumerable,您可以将其用于辅助方法调用。
@{
List<string> oo = ViewBag.oox;
var obj = oo.Select(ch => new SelectListItem { Text = ch, Value = ch });
}
@Html.DropDownList("xyz", obj)
DropDownList
方法 returns MvcHtmlString
用于 SELECT 元素标记。当您在代码块内调用它时,您不会在任何地方使用该方法的输出。当您在带有 @
前缀的代码块外部进行调用时,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
returns 是一个意外的值,您的代码将在对该值调用 Select
方法时崩溃。所以在使用它之前进行空检查是安全的。考虑使用强类型视图模型方法而不是 ViewBag/ViewData 来传输此数据。
您在下面这段代码中的其他新 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
中使用:
@Html.DropDownList("xyz", obj);
@Html.DropDownListFor(m => m.xyz, obj);
谁能帮我写下面的代码,它在视图中没有显示任何内容
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
}
假设 ViewBag.oox
中有一个字符串列表,您应该在代码块之外调用 DropDownList
方法。
此外,您不需要显式 List<string>
构造函数(不是您的下拉列表不呈现 thoughg 的原因)。 Select
方法 returns 一个 IEnumerable,您可以将其用于辅助方法调用。
@{
List<string> oo = ViewBag.oox;
var obj = oo.Select(ch => new SelectListItem { Text = ch, Value = ch });
}
@Html.DropDownList("xyz", obj)
DropDownList
方法 returns MvcHtmlString
用于 SELECT 元素标记。当您在代码块内调用它时,您不会在任何地方使用该方法的输出。当您在带有 @
前缀的代码块外部进行调用时,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
returns 是一个意外的值,您的代码将在对该值调用 Select
方法时崩溃。所以在使用它之前进行空检查是安全的。考虑使用强类型视图模型方法而不是 ViewBag/ViewData 来传输此数据。
您在下面这段代码中的其他新 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
中使用:
@Html.DropDownList("xyz", obj);
@Html.DropDownListFor(m => m.xyz, obj);