【问题标题】:Post Redirect Get in asp.net发布重定向获取在 asp.net
【发布时间】:2011-03-01 10:07:22
【问题描述】:

我有兴趣在我的网站中为我创建的一些表单实施 PRG。目前他们回发给自己,显然刷新这些页面会重复发布数据。谁能指出我如何将其编码到我的网站的好教程的方向?我理解逻辑,但不确定从哪里开始。 谢谢

【问题讨论】:

    标签: asp.net webforms


    【解决方案1】:

    回发到表单后,您只需在回发后执行重定向即可。

    DoPostbackProcessing();
    Response.Redirect("FormConfirmationPage.aspx");
    

    作为一个非常简单的例子,基本上只要你重定向(GET)到另一个页面,那么用户就不能复制回发。当然,如果论坛有任何错误你可能不想重定向,但这取决于个人需求。

    编辑:一个很好的例子是搜索,而不是发回然后执行搜索,你会重定向和 GET:

    // Instead of performing search now we will redirect to ourselves with the criteria.
    var url = "SearchPage.aspx?criteria=" + txtSearch.Text;
    Response.Redirect(url);
    

    然后重定向,页面然后检查条件查询字符串,然后执行搜索,当用户刷新时再次搜索 - 另外他们可以为页面添加书签以进行即时搜索。

    【讨论】:

    • 那么我如何才能引用原始表单中的值,然后这些值已发布到数据库中?在我做过这种事情的经典 asp 中,我会使用 request.form("controlID")。页面重定向后我可以这样做吗?
    • 不,PRG的想法是把key值放在urls查询字符串中,你只能在post-back的时候获取表单值,GET会使用查询字符串。 HTMS。也看看这个:en.wikipedia.org/wiki/Post/Redirect/Get.
    • 谢谢你,我已经使用 request.querystring("blahblah") 来获取值。出于兴趣,如果我有几个想要插入到超过限制的 url 中的值怎么办?我的一些表单会传输大量数据。
    • 你不应该这样提交表单,你仍然执行回发并更新数据库,但之后确保你重定向关闭页面,这样可以确保用户不会错误地重复发布, GET 就是它所说的,一个 GET,而不是一个 POST。
    猜你喜欢
    • 1970-01-01
    • 2011-05-19
    • 2010-12-27
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 2010-12-06
    • 1970-01-01
    相关资源
    最近更新 更多