如何在查询字符串中传递多个参数

120

我有三个参数需要传递,例如strIDstrNamestrDate

我想要将这三个参数重定向到另一个页面中的Response.Redirect()。 有人可以给我正确的查询字符串吗?

7个回答

144

查询字符串

包含查询字符串的典型URL如下:

http://server/path/program?query_string

当服务器接收到这样一个页面的请求时,它会运行一个程序(如果配置了相应的选项),将查询字符串原封不动地传递给该程序。问号用作分隔符,不属于查询字符串的一部分。

网页中的链接可能具有包含查询字符串的URL,但是HTML定义了三种方法,可以让Web浏览器生成查询字符串:

  • 通过...元素的Web表单
  • 通过在元素上使用ismap属性和一个<area>构造的服务器端图像映射
  • 通过现已弃用的<isindex>元素进行索引搜索

Web表单

查询字符串的主要用途是包含HTML表单(也称为Web表单)的内容。特别是,在提交包含字段field1、field2、field3的表单时,字段的内容将编码为以下查询字符串:

field1=value1&field2=value2&field3=value3...

  • 查询字符串由一系列字段值对组成。
  • 在每个对中,字段名称和值之间用等号分隔。如果值为空字符串,则可以省略等号。
  • 一系列对之间由和号“&”(或分号“;”用于嵌入HTML中而不是通过<form>生成的URL,详见下文)分隔。虽然没有明确的标准,但大多数Web框架允许将多个值与单个字段关联:

field1=value1&field1=value2&field1=value3...

对于表单中的每个字段,查询字符串都包含一个键值对 field=value。Web表单可能包含用户看不到的字段;这些字段在提交表单时会包含在查询字符串中。
这种约定是W3C的推荐。W3C建议所有Web服务器支持分号分隔符和与符号分隔符[6],以允许应用程序/ x-www-form-urlencoded查询字符串在HTML文档内的URL中,而无需实体转义和符号。
在技术上,当表单提交方法为GET时,表单内容仅作为查询字符串进行编码。当提交方法为POST时,默认使用相同的编码,但结果不会作为查询字符串发送,也就是说,不会添加到表单的操作URL中。相反,该字符串将作为HTTP请求的正文发送。

39
Query String: ?strID=XXXX&strName=yyyy&strDate=zzzzz

重定向之前:

string queryString = Request.QueryString.ToString();

Response.Redirect("page.aspx?"+queryString);

16

试试这样做,它应该可以工作。

Response.Redirect(String.Format("yourpage.aspx?strId={0}&strName={1}&strDate{2}", Server.UrlEncode(strId), Server.UrlEncode(strName),Server.UrlEncode(strDate)));

10

可以通过使用以下方法来实现:

Response.Redirect("http://localhost/YourControllerName/ActionMethodName?querystring1=querystringvalue1&querystring2=querystringvalue2&querystring3=querystringvalue3");

1
@DalijaPrasnikar 这个“link”是指向本地主机的URL,是答案的一部分。请不要进行“机器人审查”。 - ElGavilan

10
~mypage.aspx?strID=x&strName=y&strDate=z

2

多个查询参数示例:

http://www.mywebsite.com/mycontroller/myaction?querystring1=querystringvalue1&querystring2=querystringvalue2&querystring3=querystringvalue3

1
我使用AbsoluteUri,你可以像这样获取它:
string myURI = Request.Url.AbsoluteUri;
 if (!WebSecurity.IsAuthenticated) {
        Response.Redirect("~/Login?returnUrl="
            + Request.Url.AbsoluteUri );

然后在您登录之后:
var returnUrl = Request.QueryString["returnUrl"];
 if(WebSecurity.Login(username,password,true)){
                Context.RedirectLocal(returnUrl);

它对我来说很好用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接