我正在从MS表中检索一个字符串,它可能只是一个名称或分隔名称:例如Tom或扬声器1,扬声器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 发布于 2016-12-28 03:12:34
您可以考虑始终将可枚举的扬声器对象传递到视图中,而不管是否存在一个或多个扬声器。
在您的观点中,您正在枚举扬声器对象,在"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),并在这种情况下以不同的方式处理输出。
https://stackoverflow.com/questions/41354844
复制相似问题