c#通过PostBackUrl发送参数

时间:2015-03-26 21:11:09

标签: c# asp.net

我正在尝试使用URL将参数从一个页面发送到另一个页面。我试图使用PostBackURL来做这个,但每当我调试我的变量在另一页上充满了垃圾。

这是我在第一页的aspx代码:

<asp:LinkButton ID="LinkButton1" PostBackUrl="~/ReportingMergeCheck/Report.aspx?DateStamp='DateStamp'ReportSourceID='ReportSourceID'" runat="server">

现在我试图在Report页面上捕获DateStamp和ReportSourceID。使用c#代码执行此操作:

string ADate = Request.QueryString["DateStamp"];
int MYID = Convert.ToInt32(Request.QueryString["ReportSourceID"]);

遗憾的是它没有填写日期或ID。有什么想法吗?

4 个答案:

答案 0 :(得分:2)

你错过了一个&符号:

<asp:LinkButton ID="LinkButton1" PostBackUrl="~/ReportingMergeCheck/Report.aspx?DateStamp='DateStamp'&ReportSourceID='ReportSourceID'" runat="server">

答案 1 :(得分:1)

嘿,伙计们感谢所有的帮助,并特别向Gregs发帖,这真的帮助我找到了正确的答案。所以问题当然是我的PostBackURL的格式,最后这是有效的字符串。

PostBackUrl='<%# "~/ReportingMergeCheck/Report.aspx?DateStamp=" +  Eval("DateStamp","{0:MM/dd/yyyy}")  + "&ReportSourceID=" + Eval("ReportSourceID") %>'

对于那些在未来遇到同样问题的人来说,它有一个格式化的日期,谢谢大家!

答案 2 :(得分:0)

尝试这个

<asp:LinkButton ID="LinkButton1" PostBackUrl="~/ReportingMergeCheck/Report.aspx?DateStamp=DateStamp&ReportSourceID=ReportSourceID" runat="server">

答案 3 :(得分:0)

你真的没有问题,你的问题源于印刷错误。没有&符号(&)。这实际上用于分隔不同的参数。

<asp:LinkButton id="lbExample" runat="server" OnClick="lbExample_Click" />

我在这里使用普通事件,而不是你的方法,所以我可以使用服务器以我想要的方式构建数据。

protected void lbExample_Click(object sender, EventArgs e)
{
     // Parse any Command Arguments, or anything else to build URL.
     var url = String.Format("~/Example?id={0}&report={1}", id, report);
     Response.Redirect(url);
}

因此,您会注意到?表示查询字符串参数的开头,&会添加更多参数。在您重定向的新页面上,从集合中提取数据时不应该有任何问题:

var id = Request["id"];

你不应该有任何特殊的斜线,这些斜线可能是由于错误的逃逸或数据传递造成的。

如果您遵循当前方法,请从参数中删除',因为这将修改类型。你应该做到:

<asp:LinkButton id="lbExample" runat="server" PostBackUrl="
    ~/ReportingMergeCheck/Report.aspx?DateStamp=DateStamp&ReportSourceID=ReportSourceID" />