C# 使用Json在循环中声明变量

C# 使用Json在循环中声明变量,c#,asp.net,json,C#,Asp.net,Json,这是我在控制器中的代码 public JsonResult directory() { List<string> alp = new List<string>(); var alp1 = new List<directories>(); string array = ""; int a = 0; for (a = 0; a <= 25; a++) { int unicode = a + 65

这是我在控制器中的代码

public JsonResult directory()
{
    List<string> alp = new List<string>();
    var alp1 = new List<directories>();
    string array = "";
    int a = 0;
    for (a = 0; a <= 25; a++)
    {
        int unicode = a + 65;
        char character = (char)unicode;
        string text1 = character.ToString();
        string url1 = "<a href='/Directories/?search=" + text1 + "' 'rel=" + text1 + "'>";
        string alpha = text1;
        alp.Add(url1);
        alphatxt.Add(alpha);
    }
    var alphaa = alp1.Add(new directories { arrary = url1, character = alphatxt });
    return Json(alphaa, JsonRequestBehavior.AllowGet);
}

public class directories
{
    public int a { get; set; }
    public int unicode { get; set; }
    public char character { get; set; }
    public string[] arrary { get; set; }
}
如何在循环外调用这两个输出

这样我就可以通过返回得到我的输出

Json(alphaa, JsonRequestBehavior.AllowGet);
但是我不知道如何将输出声明到循环外的变量。

您可以访问该属性,但我认为这不是您真正需要的。我建议创建一个返回实际结果的方法,在操作中调用该方法并将其序列化为JSON:

public JsonResult directory()
{
    return Json(this.GetDirectories(), JsonRequestBehavior.AllowGet);
}

private List<directories> GetDirectories()
{
    ... // your original code
}

如果您试图构建一个URL列表,每个字母对应一个URL,那么您可以简单地执行以下操作:

public List<Directory> GetDirectories()
{
    var dirs = new List<Directory>();
    for (var ch = 'A'; ch <= 'Z'; ch++)
    {
        var url = string.Format(
            "<a href='/Directories/?search={0}' rel='{0}'>", ch);

        dirs.Add(new Directory() { Character = ch, Url = url });
    }
    return dirs;
}

// Directory class is simplifed a bit in this example
public class Directory
{
    public char Character { get; set; }
    public string Url { get; set; }
}
使用LINQ,可以简化为:

private static readonly string Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public List<Directory> GetDirectories()
{
    return Alphabet
        .Select(ch => new Directory() { Character = ch, Url = CreateUrl(ch) })
        .ToList();
}

private string CreateUrl(char ch)
{
    return string.Format("<a href='/Directories/?search={0}' 'rel={0}'>", ch);
}

从您的代码目前的外观来看,似乎根本不需要在服务器端创建此列表您正在传输一组几乎相同的硬编码URL,这些URL可以使用JavaScript轻松地在客户端创建,因此我假设您正在通过此查询传输一些额外的数据?

我尝试了许多方法,终于有了这样的想法

我的代码如下所示

public JsonResult directory()
        {


            List<string> alp = new List<string>();
            var alp1 = new List<directories>();
            string array = "";
            int a = 0;
            for (a = 0; a <= 25; a++)
            {
                int unicode = a + 65;
                char character = (char)unicode;
                string text1 = character.ToString();
                string url1 = "<a href='/Directories/?search=" + text1 + "' 'rel=" + text1 + "'>";
                string alpha = text1;
                alp.Add(url1);
                alp.Add(alpha);
                alp1.Add(new directories { dirurl = url1, text = alpha });
            }

            return Json(alp1, JsonRequestBehavior.AllowGet);
        }


        public class directories
        {

            public string text { get; set; }
            public string dirurl { get; set; }
        }


    }
}

你到底想干什么?创建URL列表,字母表中每个字符对应一个URL?显然,for循环是最快的:
private static readonly string Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public List<Directory> GetDirectories()
{
    return Alphabet
        .Select(ch => new Directory() { Character = ch, Url = CreateUrl(ch) })
        .ToList();
}

private string CreateUrl(char ch)
{
    return string.Format("<a href='/Directories/?search={0}' 'rel={0}'>", ch);
}
public JsonResult directory()
        {


            List<string> alp = new List<string>();
            var alp1 = new List<directories>();
            string array = "";
            int a = 0;
            for (a = 0; a <= 25; a++)
            {
                int unicode = a + 65;
                char character = (char)unicode;
                string text1 = character.ToString();
                string url1 = "<a href='/Directories/?search=" + text1 + "' 'rel=" + text1 + "'>";
                string alpha = text1;
                alp.Add(url1);
                alp.Add(alpha);
                alp1.Add(new directories { dirurl = url1, text = alpha });
            }

            return Json(alp1, JsonRequestBehavior.AllowGet);
        }


        public class directories
        {

            public string text { get; set; }
            public string dirurl { get; set; }
        }


    }
}