【问题标题】:Cannot pass array correctly to other page in asp.net C#无法将数组正确传递到asp.net C#中的其他页面
【发布时间】:2011-09-11 17:06:54
【问题描述】:
    //FID is an array
     Response.Redirect("show.aspx?id=" + ID + "&name=" + NAME + "&fileid=" + FID+"&length="+j);


 //In show.aspx


 Label1.Text = Request.QueryString["fileid"].ToString();

我将标签文本作为 System.String[]

【问题讨论】:

  • 您希望 Label1.Text 显示什么?
  • System.String[] 是字符串数组的字符串表示形式。如果你想传递一个数组,你需要像fid[]=item1&fid[]=item2... 这样构造你的url。

标签: c# asp.net arrays parameter-passing


【解决方案1】:

我建议您不要在查询字符串中将array 作为参数传递,而是将其放在Session 变量中。

如果你真的想传入一个数组,那么你可以把它设为comma separated string然后传入,然后在第二页split那个字符串

编辑:检查上面的链接,这里是你如何做到这一点..

    Session["fileid"] = FID; // set in session in first page
     //Accessing on Second page
    String[] FID;
    FID = (String[])Session["FID"];

【讨论】:

  • 现在我正在使用 join Split。但是请告诉我如何使用 Session 变量。
  • 如何将字符串数组转换为整数数组。
【解决方案2】:

鉴于 FID 是一个数组,如果你想给它第一个值,那么你必须这样做:

Response.Redirect("show.aspx?id=" + ID + "&name=" + NAME + "&fileid=" + (FID.Length == 1 ? FID[0]: "") +"&length="+j);

在我的示例中,如果 FID 大于或小于 1,它将发送一个空字符串,您必须根据您的要求在那里创建自己的验证

如果有超过 1 个值并且您想传递所有值,则必须创建循环逻辑,但从您的示例来看,它似乎只能保存 1 个值

【讨论】:

    【解决方案3】:

    那是因为 string[] 的 ToString() 方法是“System.String[]”!您需要提供一些打印机来打印出数组的内容。

    【讨论】:

      【解决方案4】:

      按照@Muhammad Akhtar 的说法,使用Session 可能会更好。

      但如果您绝对需要在查询字符串中传递数组,您可以使用String.Join() 将数组元素连接在一起——您只需选择一个合适的分隔符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-11
        • 2018-12-11
        • 1970-01-01
        • 2015-11-04
        • 2021-09-06
        • 2017-05-08
        相关资源
        最近更新 更多