如何在查询string中传递多个参数
我有三个值,我必须作为例如strID
, strName
和strDate
parameter passing。
我想将这三个参数redirect到Response.Redirect()
另一个页面。任何人都可以提供正确的查询string?
请求参数
(以下是维基百科条目的链接部分的文字。)
结构体
包含查询string的典型URL如下所示:
http://server/path/program?query_string
当一个服务器接收到这样一个页面的请求,它运行一个程序(如果这样做的话),将query_string传递给程序。 问号用作分隔符,不是查询string的一部分。
网页中的链接可能包含一个包含查询string的URL,但HTML定义了浏览器可以生成查询string的三种方式:
- 一个web表单通过…元素
- 一个服务器端的图像映射,通过构造元素上的ismap属性
- 通过现在已弃用的元素进行索引search
Web表单
查询string的主要用途是包含HTML表单(也称为Web表单)的内容。 特别是,当提交包含字段field1,field2,field3的表单时,字段的内容将被编码为查询string,如下所示:
field1=value1&field2=value2&field3=value3...
- 查询string由一系列字段 – 值对组成。
- 在每对中,字段名称和值由等号分隔。 如果值为空string,等号可以省略。
- 一系列对由&符号分隔,'&'(或分号,';'表示embedded在HTML中的URL,不是由…生成;见下文)。 虽然没有明确的标准,但大多数Web框架允许将多个值与单个字段相关联:
field1=value1&field1=value2&field1=value3...
对于表单的每个字段,查询string都包含一个pair = value。 Web表单可能包含对用户不可见的字段; 提交表单时,这些字段包含在查询string中
这个约定是W3C的build议。 W3Cbuild议所有Web服务器支持分号分隔符,除了&符号分隔符[6]以允许HTML文档中的URL中的应用程序/ x-www-form-urlencoded查询string,而不必实体转义符号。
从技术上讲,当表单提交方法是GET时,表单内容仅被编码为查询string。 提交方法为POST时默认使用相同的编码,但结果不作为查询string发送,即不会添加到表单的操作URL。 相反,该string是作为HTTP请求的主体发送的。
Query String: ?strID=XXXX&strName=yyyy&strDate=zzzzz
在redirect之前:
string queryString = Request.QueryString.ToString(); Response.Redirect("page.aspx?"+queryString);
试试这个,它应该可以工作
Response.Redirect(String.Format("yourpage.aspx?strId={0}&strName={1}&strDate{2}", Server.UrlEncode(strId), Server.UrlEncode(strName),Server.UrlEncode(strDate)));
~mypage.aspx?strID=x&strName=y&strDate=z
这可以用这种方式完成:
Response.Redirect("http://localhost/YourControllerName/ActionMethodName?querystring1=querystringvalue1&querystring2=querystringvalue2&querystring3=querystringvalue3");
我使用AbsoluteUri,你可以这样得到它:
string myURI = Request.Url.AbsoluteUri; if (!WebSecurity.IsAuthenticated) { Response.Redirect("~/Login?returnUrl=" + Request.Url.AbsoluteUri );
然后login后:
var returnUrl = Request.QueryString["returnUrl"]; if(WebSecurity.Login(username,password,true)){ Context.RedirectLocal(returnUrl);
这对我来说很有用。