使用razor将字符串添加到List <string>

时间:2015-08-28 19:12:21

标签: asp.net-mvc razor

我需要在TempData [&#34;脚本&#34;]中添加一个字符串数组,但首先我需要查看该字符串是否已经存在...如果存在则不要添加它... 。否则将其添加到数组中。

这是我到目前为止...它将字符串添加到数组...但我需要先检查Tempdata,这样它就不会重复...

@{
        var scripts = (List<string>)TempData["scripts"];
        scripts.Add("../Scripts/test.js");
        scripts.Add("../Scripts/testv.js");
        scripts.Add("../Scripts/testh.js");
    }

3 个答案:

答案 0 :(得分:1)

@{
        var scripts = (List<string>)TempData["scripts"];
        if(scripts.Contains("../Scripts/test.js") == false)
        {
             scripts.Add("../Scripts/test.js");
        }
        //repeat with the others
    }

答案 1 :(得分:0)

编辑以反映您的答案

假设TempData["scripts"]IEnumerable<string>,您可以更简单地执行此操作:

var scripts = (HashSet<string>)TempData["scripts"];
string[] path = {
    "../Scripts/jquery-flot/jquery.flot.js",
    "../Scripts/jquery-flot/jquery.flot.time.min.js",
    "../Scripts/jquery-flot/jquery.flot.selection.min.js",
    "../Scripts/jquery-flot/jquery.flot.animator.min.js",
    "../Scripts/jquery-sparkline/jquery-sparkline.js"
};

foreach (var item in path)
    scripts.Add(item);

没有必要以这种方式检查重复项。

答案 2 :(得分:0)

我希望能够将路径作为参数传递,所以我不必每次都重复两次

 @{
        var scripts = (List<string>)TempData["scripts"];
        string[] path = {
            "../Scripts/jquery-flot/jquery.flot.js",
            "../Scripts/jquery-flot/jquery.flot.time.min.js",
            "../Scripts/jquery-flot/jquery.flot.selection.min.js",
            "../Scripts/jquery-flot/jquery.flot.animator.min.js",
            "../Scripts/jquery-sparkline/jquery-sparkline.js"
        };
        foreach (var item in path)
        {
            if (scripts.Contains(item) == false) { scripts.Add(item); }
        }
    }