【问题标题】:GET and POST in asp.net在 asp.net 中获取和发布
【发布时间】:2010-02-11 05:44:27
【问题描述】:

何时使用 GET 和何时使用 POST。我想在如下代码中隐藏我的查询字符串:

protected void LinkButton1_Click(object sender, EventArgs e)
{
    Response.Redirect("~/Page1.aspx?mode=Create");
}

我不想在查询字符串中显示 Create word。我必须做什么。以及如何实施 Post/Redirect/Get 模式。如果可能,请给我发送代码。 谢谢阅读。请帮助我太困惑了

【问题讨论】:

    标签: asp.net post get


    【解决方案1】:

    GET 用于在不进行任何修改或产生任何副作用的情况下检索资源,POST 用于向资源添加信息(但不创建新资源,即PUT )。这些只是指导方针,并没有在功能上强制执行;您可以使用POST 请求来检索资源,而GET 请求可能会产生副作用。

    因此,您可以将模式信息放入POST 请求的正文中;你也可以做一些更简单的事情并为你的模式分配数值,这样你就有了

    Response.Redirect("~/Page1.aspx?mode=2");
    

    只有服务器会知道模式 2 是“创建”。

    如果您想阻止用户(轻松)直接修改mode 值,那么POST 正文将是比查询字符串更好的解决方案。

    【讨论】:

      【解决方案2】:

      GET HTTP 方法将其变量保存在其查询字符串中。这就是它的设计方式。因此,如果您不希望查询字符串中包含变量,并且希望将这些变量发送到服务器,那么您将不得不使用 GET 以外的其他内容。

      现在我猜你在问如何在请求之后但在重定向之前从查询字符串中删除变量?

      请参阅http://www.west-wind.com/weblog/posts/132081.aspx 此页面有一个 ASP.Net 属性列表,这些属性公开了各种路径和 URL 信息。

      因此,例如,如果您在 POST 之后执行 GET,则假定您实际上不应该有需要删除的查询字符串变量。因此

      Response.Redirect(Request.RawUrl);
      

      可以解决问题。

      Request.RawUrl 将包含一个查询字符串(如果有的话)。因此,要访问没有查询字符串的路径,请在回发处理结束时使用 Response.Redirect 调用尝试 'Request.FilePath' 或 Request.CurrentExecutionFilePath

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-15
        相关资源
        最近更新 更多