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, а также