繁体   English   中英

来自ViewBag中字符串的MVC c#列表

[英]MVC c# List from string in ViewBag

我正在从MS Sql表中检索一个字符串,它可能只是一个名称或定界名称:例如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 

您可能会考虑始终将可枚举的扬声器对象传递给视图,而不管是否有一个或多个扬声器。

在您看来,您正在枚举Speaker对象,在“ 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)并以不同的方式处理输出案件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM