当前位置:  开发笔记 > 编程语言 > 正文

如何检查ViewBag中的List是否包含字符串

如何解决《如何检查ViewBag中的List是否包含字符串》经验,为你挑选了1个好方法。

我有一个ViewBag,它是我在控制器中创建的列表:

 List listoflists = new List();

然后它会填充一些字符串,例如:

listoflists.Add("java");
listoflists.Add("php");
listoflists.Add("C#");

将其添加到ViewBag:ViewBag.listoflists = listoflists;

我想在我的View中检查它是否包含特定的字符串:

@if(ViewBag.listoflists.contains("java")
{
// do html stuff
}

但是在运行时我收到以下错误:

System.Collections.Generic.List不包含contains的定义

我做错了什么,或者如何查看列表中是否包含某些内容?



1> Darin Dimitr..:

您可能需要强制转换为字符串列表:

@if (((IList)ViewBag.listoflists).Contains("java")
{
    // do html stuff
}

另请注意,该Contains方法以大写字母开头C.

因此,您可以看到在ASP.NET MVC中使用ViewBag是一个完整的垃圾,导致您的视图中非常难看的代码.因此,强烈建议使用视图模型,该视图模型将包含特定视图的所有必要信息,并且也是强类型的.

所以切掉这个ViewBag垃圾并开始使用视图模型:

public class MyViewModel
{
    public IList ListOfLists { get; set; }
}

您的控制器操作可以填充并传递给视图:

public ActionResult Index()
{
    var model = new MyViewModel();
    List listoflists = new List();
    listoflists.Add("java");
    listoflists.Add("php");
    listoflists.Add("C#");
    model.ListOfLists = listoflists;
    return View(model);
}

现在你可以对这个模型有一个强类型视图,这将允许你避免以前的转换:

@model MyViewModel

@if (Model.ListOfLists.Contains("java"))
{
    // do html stuff
}

所以基本上每次在ASP.NET MVC应用程序中使用ViewBag/ViewData时,警报都会立即响起,告诉你:伙计,你到底做错了什么.只需使用视图模型,以避免将您的视图转换为完全无关的C#语言结构(如转换和填充).视图用于显示标记.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有