【问题标题】:Passing value through querstring without showing the destination page in the URL with ASP.NET web form使用 ASP.NET Web 表单通过 querstring 传递值而不在 URL 中显示目标页面
【发布时间】:2010-10-22 18:17:03
【问题描述】:

我有一个用 ASP.NET、VB.NET、.NET 3.5 编写的小型 Web 应用程序

我使用查询字符串将值从 default.aspx 传递给 demo.aspx。当点击 Go 按钮时,URL 将如下所示:localhost/demo.aspx?id=4

但是我希望当点击 Go 按钮时 URL 是这样的:localhost/?id=4 并且 id 值被传递给 demo.aspx 以便可以显示预期的结果。如果可能,如何在不使用路由技术的情况下完成此操作。

【问题讨论】:

  • 添加了几个标签以扩大受众范围

标签: asp.net vb.net url


【解决方案1】:

这仅在 Web 服务器将 demo.aspx 视为默认文档时才有效。当你加载一个页面时没有说明页面名称(例如你的 localhost/?id=4 示例),Web 服务器将找到一个具有预定义名称的文件并将其用作默认文档。此文件通常称为 default.aspx(或 .asp、.htm、.html、.php 或类似名称)。因此,如果您想加载任何其他页面,则需要说明名称或使用 URL 重写技术。

【讨论】:

  • 在这种情况下,它不是同一个页面。所以我需要重写URL。
【解决方案2】:
  1. 将您的 go 按钮修改为链接按钮并设置 herf = "?id=[id]"
  2. 使用以下代码修改 Default.aspx 的 Page_Load 事件。

public Page_Load(object sender,EventArg e) {

if(!string.IsNullOrEmpty(Request["id"]))
{
   // Using Server.Transfer() function to call Demo.aspx page.
   // Client still see "localhost/?id=[id]" at address bar.
   Server.Transfer("Demo.aspx?id=" + Request["id"]);
}

}

【讨论】:

    【解决方案3】:

    这样的?

    protected void btnGo_Click (Object sender, EventArgs e)
    {
        Response.Redirect("localhost/?" + Request.QueryString);
    }
    

    不确定您希望何时更改网址?也不确定路由技术是什么。对不起。

    【讨论】:

      【解决方案4】:

      如果您希望它与回发一起使用,您仍然需要确保使用默认文档配置网络服务器,例如 default.aspx。

      在 3.5 sp1 MS 中终于允许我们设置表单的 action 属性了。

      所以在页面初始化时,您现在可以显式设置它

      Form1.Action = "/mydirectory/"
      

      警告:某些版本的 IIS 不允许发布到目录。 (以 XP IIS 为例)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多