如何获取url发送的未知数量的变量 - C#

时间:2014-02-26 14:43:37

标签: c#

在网络表单中,我有以下标记:

<a href="download.aspx?file0=test0&file1=test1.......></a>

我事先并不知道发送了多少变量。

在C#中,我试图全力以赴:

int cpt=0;
string[] pdfs = new string[];
while ( Request["'file'.cpt"] != null) //<-----ERROR
{
   pdfs[cpt] =  Request['"file".cpt'] ;
   cpt++; 
}

不幸的是我有以下错误:

  

字符文字中的字符太多

任何人都可以帮我解决这个问题吗? 谢谢

3 个答案:

答案 0 :(得分:1)

您的错误消息具体归因于以下行:

pdfs[cpt] = Request['"file".cpt'];

您应该交换单引号和双引号,使其看起来像:

pdfs[cpt] = Request["'file'.cpt"];

在C#中,必须使用双引号引用字符串。单引号只能用于分隔字符。

答案 1 :(得分:1)

您正在尝试将cpt变量的当前值添加到"file"字面值,但它不会以这种方式工作。请尝试以下方法:

Request[String.Format("file{0}", cpt)]

顺便说一下 - 这可以更快地完成:

var pdfs = Request.QueryString
                  .Keys
                  .Cast<String>()
                  .Where(key => key.StartsWith("file"))
                  .Select(key => Request.QueryString[key])
                  .ToArray();

答案 2 :(得分:0)

要以您描述的格式检索未知数量的变量,您需要执行此操作。

List<string> pdfs = new List<string>();
foreach(string k in Request.QueryString.Keys)
{
    if (k.StartsWith("file"))
       pdfs.Add(Request.QueryString[k]);
}