MVC c# List 来自 ViewBag 中的字符串
MVC c# List from string in ViewBag
我正在从 MS Sql table 中检索一个字符串,它可能只是一个名字或带分隔符的名字:例如 Tom 或 Speaker 1,Speaker 2。
我使用以下命令将字符串转换为控制器中的列表:
Event cevent = db.Events.Find(id);
string speakers = cevent.Speakers;
ViewBag.speakers = "";
if (!String.IsNullOrWhiteSpace(speakers) &&
speakers.Contains(","))
{
ViewBag.speakers = speakers.Split(',').ToList();
}
else
{
ViewBag.speakers = speakers;
}
return View(cevent);
在视图中,我使用以下内容显示列表:
<ul>
@foreach (var item in ViewBag.speakers)
{
<li> @item </li>
}
</ul>
与列表配合得很好,我得到:
• Speaker 1
• Speaker 2
但是,如果 ViewBag 只有一项,我得到:
• T
• o
• m
您可能会考虑始终将可枚举的演讲者对象传递给视图,无论是否有一个或多个演讲者。
在您看来,您正在枚举扬声器对象,在 "Tom" 的情况下,它是一个字符列表。你可以尝试这样的事情,而不是:
在控制器中:
ViewBag.speakers = new List<string>();
string speakers = cevent.Speakers;
var listOfSpeakers = speakers.Split(',').ToList();
foreach (var speaker in listOfSpeakers)
{
ViewBag.speakers.Add(speaker)
}
如果您需要根据是否有多个演讲者传递给视图来格式化 HTML 输出,您可以在条件块中的演讲者列表上使用 if(ViewBag.speakers.Count > 1)
并处理在这种情况下输出不同。
我正在从 MS Sql table 中检索一个字符串,它可能只是一个名字或带分隔符的名字:例如 Tom 或 Speaker 1,Speaker 2。
我使用以下命令将字符串转换为控制器中的列表:
Event cevent = db.Events.Find(id);
string speakers = cevent.Speakers;
ViewBag.speakers = "";
if (!String.IsNullOrWhiteSpace(speakers) &&
speakers.Contains(","))
{
ViewBag.speakers = speakers.Split(',').ToList();
}
else
{
ViewBag.speakers = speakers;
}
return View(cevent);
在视图中,我使用以下内容显示列表:
<ul>
@foreach (var item in ViewBag.speakers)
{
<li> @item </li>
}
</ul>
与列表配合得很好,我得到:
• Speaker 1
• Speaker 2
但是,如果 ViewBag 只有一项,我得到:
• T
• o
• m
您可能会考虑始终将可枚举的演讲者对象传递给视图,无论是否有一个或多个演讲者。
在您看来,您正在枚举扬声器对象,在 "Tom" 的情况下,它是一个字符列表。你可以尝试这样的事情,而不是:
在控制器中:
ViewBag.speakers = new List<string>();
string speakers = cevent.Speakers;
var listOfSpeakers = speakers.Split(',').ToList();
foreach (var speaker in listOfSpeakers)
{
ViewBag.speakers.Add(speaker)
}
如果您需要根据是否有多个演讲者传递给视图来格式化 HTML 输出,您可以在条件块中的演讲者列表上使用 if(ViewBag.speakers.Count > 1)
并处理在这种情况下输出不同。