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

时间:2014-04-09 15:30:59

标签: c# asp.net

我有一个参数:

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"

我做错了什么?我以前做过这个没有问题。

3 个答案:

答案 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);