代码之家  ›  专栏  ›  技术社区  ›  Ken Browning

如何在asp.net WebForms中实现Post/Redirect/Get模式?

  •  4
  • Ken Browning  · 技术社区  · 17 年前

    我一直在做的是将标识符作为查询字符串参数发送。这工作得很好,但它引入了书签问题,而且似乎扩展得不太好。如果我需要发送所有ViewState怎么办?

    2 回复  |  直到 17 年前
        1
  •  3
  •   Andrew Corkery    17 年前

    如果字段POSTed在重定向之前被持久化,并且您需要在重定向之后访问该数据,我会在您提到的查询字符串上附加数据记录的标识符。您还可以指定请求的状态(用于显示消息等)。然后在GET页面上,您可以读取数据并对其进行任何操作。

    我看不出有任何其他方法可以解决这个问题,因为get获得的每个页面都无法访问上一个页面 ViewState 等等

    使用 Server.Transfer 将与在原始页面上处理POST具有相同的效果。

    您可以使用Session变量来存储POST数据,但这很糟糕。

        2
  •  0
  •   Stacked Emily M    11 年前

    我认为你仍然可以在form元素中使用get方法。

    更新:抱歉,我刚刚再试了一次。并发现您可以通过代码后面的ID访问服务器控件。比如:

    Response.Write(text1.Text)
    

    请参阅示例:

    aspx页面(仅表单元素):

    < form id="form1" runat="server" method="get">
    < div>
    < asp:TextBox ID="text1" runat="server" />
    < asp:Button ID="button1" runat="server" OnClick="buttonClick" />
    < div>
    < form>
    

    我在每个“<”之前使用了空格,否则上面的代码将不可见。

    protected void buttonClick(object sender, EventArgs e)
        {
            string text = Request.Params["text1"];
    
            Response.Write(text);
        }
    

    http://localhost:1157/WebSite1/Default.aspx?__VIEWSTATE=%2FwEPDwUKMTkwNjc4NTIwMWRkoJEtEHZ8lHQ53QllSkz8ncpEw80%3D&__EVENTVALIDATION=%2FwEWAwKf%2BPPUCwKTjKGwCgKs34rGBvus9oxN%2FQkHlkzpKUEwrbxHLM6u&text1=ashish&button1=

    推荐文章