1

笔记:

  • 我正在使用 asp.net 4.5
  • 我正在使用母版页
  • 默认安装 FriendlyURLs
  • 我正在尝试使用 POST 方法跨页发布

在目标网址上,它返回PreviousPage = null

这是由于 FriendlyURls 造成的吗?

资源:

<asp:Button ID="btnSubmit" class="btn btn-primary" PostBackUrl="~/NewApplicationConfirmation.aspx" runat="server" Text="Submit" />

目标:

protected void Page_Load(object sender, EventArgs e)
    {
        if (PreviousPage != null)
        {
            if (PreviousPage.IsCrossPagePostBack == true)
            {
                var cp = PreviousPage.Master.FindControl("MainContent") as ContentPlaceHolder;
                TextBox PrevinputAppName = cp.FindControl("inputAppName") as TextBox;
                inputAppName.Text = PrevinputAppName.Text;
            }
            else if (PreviousPage.IsCrossPagePostBack == false)
            {
                inputAppName.Text = "page.previouspage.iscrosspagepostback is false";
            }
        }
        else inputAppName.Text = "page.previouspage is null";
    }

编辑:我最终使用这段代码来解决我的问题:

.aspx

<asp:Button ID="btnSubmit" class="btn btn-primary" onclick="Transfer_Click" runat="server" Text="Submit" />

代码隐藏

protected void Transfer_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                Server.Transfer("~/NewApplicationConfirmation.aspx");
            }
        }
4

2 回答 2

1

您的问题并不是真正由于 FriendlyUrls 造成的,您的问题是因为您在应用程序中使用路由(如果您手动定义路由而不是让 FriendlyUrls 为您连接它们,则会遇到同样的问题)。如果您将 PostbackUrl 属性更改为您的应用程序用于该页面的任何路由(可能是 ~/NewApplicationConfirmation?),那么 PreviousPage 将不再为空。但是,由于 ASP.NET 验证前一页的方式,如果您为该页设置了路由别名您可能会遇到更多问题。我会说您应该使用 PreviousPage 而没有路由,或者路由并更改您的代码以查看 Request.Form 以获取发布到它的值。

于 2015-03-24T18:19:54.280 回答
-1

您需要添加指令:

<%@ PreviousPageType virtualPath="~/PreviousPage.master"%>

请参阅 Microsoft 提供的有关使用 PreviousPages 的文档

您也可以尝试这篇Microsoft 文章中的提示

于 2015-03-24T18:33:43.280 回答