我有一个参数:
string custName = "";
custName = AddressDT.Rows[0]["first_name"].ToString() + " " + AddressDT.Rows[0]["last_name"].ToString();
我正在执行我的Response.Redirect
Response.Redirect("~/Account/EmailError.aspx?parm1=custName");
我正在检索参数值:
custName = Request.QueryString["parm1"];
当我运行debug时:... custName =" custName"
我做错了什么?我以前做过这个没有问题。答案 0 :(得分:2)
您的Response.Redirect
传递字符串" custName",而不是变量的值。
这将为您解决:
Response.Redirect("~/Account/EmailError.aspx?param1=" + custName);
答案 1 :(得分:2)
这是因为您使用字符串常量作为参数的值。
Response.Redirect("~/Account/EmailError.aspx?parm1=custName");
这总是会导致使用字符串custName
设置URL。
尝试将变量名称用作:
Response.Redirect("~/Account/EmailError.aspx?parm1=" + custName);
现在变量将附加到请求中。
现在,当您运行代码时,它会在变量中生成值,并且您可以正常运行代码。
始终记得完成字符串然后添加变量值。 double qoutes中的所有内容都被视为字符串,而不是变量名称或关键字。
答案 2 :(得分:0)
如果您已经知道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);