【问题标题】:Pass name containing & to next page using query string使用查询字符串将包含 & 的名称传递到下一页
【发布时间】:2015-04-27 05:41:47
【问题描述】:

这是我在第一页的传递代码

protected void btnsbt_Click(object sender, EventArgs e)
{
    DateTime a = DateTime.ParseExact(txtfrmdate.Text, "dd-MM-yyyy", null);
    DateTime b = DateTime.ParseExact(txttodate.Text, "dd-MM-yyyy", null);
    string c = txtCustomerName.Text.ToString();

    Response.Redirect("frmRptSalesBillWiseView.aspx?drop=" + a + "&radio=" + b + "&CustName=" + c + "");
}

当我将名称“A & A CONTAINER CONVERSIONS”传递到下一页时,我只得到“A”。

第二页代码:

custname1 = Request.QueryString["CustName"];

【问题讨论】:

  • 您可以尝试在发送之前对 URL 进行 HTML 编码,以在您的值中保留 & 字符。

标签: c# asp.net query-string


【解决方案1】:

我使用 Server.UrlEncode() 解决了这个问题

Response.Redirect("frmRptSalesBillWiseView.aspx?drop=" + a + "&radio=" + b + "&CustName=" + Server.UrlEncode(c) + ""); }

【讨论】:

    【解决方案2】:

    你应该Encode 网址。尝试使用HttpUtility.UrlEncode。喜欢:

    System.Web.HttpUtility.UrlEncode("A & A CONTAINER CONVERSIONS")
    

    【讨论】:

    • 如果我这样给出 Response.Redirect(HttpUtility.UrlEncode("frmRptSalesBillWiseView.aspx?drop=" + a + "&radio=" + b + "&CustName=" + c + "")) ;我收到错误为 HTTP 错误 404.11 - 未找到
    • @ASP.NET 不对整个 url 进行编码。您只能对查询字符串进行编码。
    【解决方案3】:

    由于名称“A & A CONTAINER CONVERSIONS”包含特殊字符“&”(与号),因此在查询字符串中具有特殊含义。

    & 用于分隔查询字符串中的多个值。 例如:?a=123&b=hi&c=bye

    在上面的示例中,查询字符串有 3 个值,仅由“&”分隔。

    因此,您必须使用this 对名称进行编码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      相关资源
      最近更新 更多