none
CrosspagePostback funktioniert nicht richtig RRS feed

  • Frage

  • Hallo,

    ich habe ein Problem mit CrosspagePostbacks. Folgendes Szenario:

    <%@ Page Title="Home Page" Language="VB" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.vb" Inherits="Galileomusic._Default" %>

    <asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">

        <asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="~/seite2.aspx" />

    </asp:Content>

    auf seite2.asx hab ich in Codebehind folgenden Code platzier:

        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If PreviousPage IsNot Nothing AndAlso PreviousPage.IsCrossPagePostBack = True Then
                If PreviousPage.Request("hidden") IsNot Nothing Then
                    ....
                End If
            End If
        End Sub

    sowohl PreviousPage ist Nothing als auch PreviousPage.IsCrossPagePostback=False. 

    Das Problem scheint wohl hier zu liegen:

    Imports System.Web.Routing
    Imports Microsoft.AspNet.FriendlyUrls

    Public Module RouteConfig
        Sub RegisterRoutes(ByVal routes As RouteCollection)
            Dim settings As FriendlyUrlSettings = New FriendlyUrlSettings()
            settings.AutoRedirectMode = RedirectMode.Permanent
            routes.EnableFriendlyUrls(settings)

        End Sub
    End Module

    Ich habe irgendwo gelesen, dass FriendlyURLs den CrosspagePostbacks ein Problem bereitet, weil es die URLs verändert. Weiß jemand, wie man trotz FriendlyURLs die CrosspagePostbacks richtig hinbekommt, oder wie man FriendlyURLs deaktiviert? Wenn ich alles auskommentiere, ist zwar PreviousPage nicht mehr Nothing und auch IsCrosspagePostback=True aber dann kann ich nicht auf PreviousPage.Request zugreifen. Die Exception lautet  dann:

    Request = {"Anforderung steht in diesem Kontext nicht zur Verfügung"}

    Vielen Dank schonmal für die Hilfe

    Daniel Dinkel

    Mittwoch, 30. Juli 2014 08:25

Alle Antworten

  • Einen Fehler habe ich selbst entdeckt. Die Abfrage der Form Werte muss natürlich über PreviousPage.FindControl laufen.

    Wenn ich den Teil in RegisterRoutes auskommentiere, dann kommen ständig:

    HTTP-Fehler 404.0 - Not Found

    Fehler. 

    Ich habe jetzt nochmal zum Testen ein einfaches Beispiel in einem neu angelegten Webform Projekt in Visual Studio 2013 in einem frischen Projekt gemacht und eines in einem mit Visual Studio 2012. In Visual Studio 2012 funktioniert der CrosspagePostback tadellos und im Visual Studio Projekt 2013 gehts nicht. Für Lösungen wäre ich sehr dankbar. Sonst bau ich mein Projekt einfach nochmal in Visual Studio 2012 neu zusammen...

    Mittwoch, 30. Juli 2014 20:11