为什么我的参数值没有在QueryString中传递

本文关键字:QueryString 我的 参数 为什么 | 更新日期: 2023-09-27 17:57:33

我有一个参数:

string custName = "";
custName = AddressDT.Rows[0]["first_name"].ToString() + " " + AddressDT.Rows[0]["last_name"].ToString();

我正在执行响应。重定向

Response.Redirect("~/Account/EmailError.aspx?parm1=custName");

我正在检索参数值:

custName = Request.QueryString["parm1"];

当我运行调试时:。。。custName="custName"

我做错了什么?我以前这样做过,没有任何问题。

为什么我的参数值没有在QueryString中传递

Response.Redirect传递的是字符串"custName",而不是变量的值。

这将为您修复:

Response.Redirect("~/Account/EmailError.aspx?param1=" + custName);

这是因为您使用字符串常量作为参数的值。

Response.Redirect("~/Account/EmailError.aspx?parm1=custName");

这将始终导致使用字符串custName设置URL。

尝试使用变量名称作为:

Response.Redirect("~/Account/EmailError.aspx?parm1=" + custName);

现在,变量将被附加到请求中。

现在,当你运行代码时,它会在变量中产生值,你会让代码运行得很好。

始终记得完成字符串,然后添加变量值。双qoutes中的所有内容都被认为是字符串,而不是变量名或关键字。

如果您已经知道QueryString值是字符串,则需要使用UrlEncode。

此外,您希望尽可能多地使用String.Format来进行良好的设计实践,而不是使用+。

string custName = String.Format("{0} {1}", 
   AddressDT.Rows[0]["first_name"].ToString(), 
   AddressDT.Rows[0]["last_name"].ToString());
string url = String.Format("~/Account/EmailError.aspx?parm1={0}", 
   Server.UrlEncode(custName));
Response.Redirect(url);