asp.net 4.5 PreviousPage имеет значение null для публикации на нескольких страницах с использованием главной страницы

Заметки:

  • Я использую asp.net 4.5
  • Я использую главную страницу
  • FriendlyURLs установлен по умолчанию
  • Я пытаюсь создать пост-страницу с использованием метода POST

На целевой URL возвращается с 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");
            }
        }

2 ответа

Решение

Ваша проблема на самом деле не связана с FriendlyUrls, ваша проблема в том, что вы используете маршрутизацию в своем приложении (у вас возникнет та же проблема, если вы определяете маршруты вручную, а не позволяете FriendlyUrls соединять их для вас). Если вы измените свойство PostbackUrl на какой-либо маршрут, используемый вашим приложением для этой страницы (возможно, ~/NewApplicationConfirmation?), То значение PreviousPage больше не будет иметь значение null. Однако из-за способа, которым ASP.NET проверяет предыдущую страницу, если для этой страницы настроен псевдоним маршрута, у вас могут возникнуть другие проблемы. Я бы сказал, что вы должны либо использовать PreviousPage без маршрутизации, либо выполнить маршрутизацию и изменить свой код, чтобы посмотреть в Request.Form значения, опубликованные в нем.

Вам нужно добавить директиву:

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

См. Документацию Microsoft по работе с PreviousPages.

Вы можете попробовать советы в этой статье Microsoft, а также

Другие вопросы по тегам