为什么我的参数值没有在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"
我做错了什么?我以前这样做过,没有任何问题。
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);