6

この MSDN の記事に従って、クロスページ投稿を試しています。私はこのコードを持っています:

CrossPagePosting1.aspx

<form id="form1" runat="server">
    <h1>Page 1</h1>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
    <asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="CrossPagePosting2.aspx"/>
</form>

CrossPagePosting2.aspx

<form id="form1" runat="server">
    <h1>Page 2</h1>
    <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
</form>

CrossPagePosting2.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    TextBox TextBox1 = (TextBox)Page.PreviousPage.FindControl("TextBox1");
    Label1.Text = TextBox1.Text;
}

上記のコードはNullReferenceExceptionat を生成しPage.PreviousPageます。なんで?

これは ASP.Net 4.0 アプリケーションです。

デフォルトの FriendlyUrls を使用します。

注:PreviousPageTypeディレクティブなどを使用して、前のページを強く型付けしたくありません。参照記事によると、これは必要ないはずです。

4

5 に答える 5

7

フレンドリ URL でこの問題が発生する可能性があることがわかりました。既定では、Web フォーム テンプレートには ASP.NET フレンドリ URL が含まれています。

Visual Studio の既定の WebForm を使用すると、AutoRedirectMode は Permanent に設定されます。これにより、リクエストが「GET」になり、フレンドリ URL を使用しているため、PreviousPage を評価できません。

回避策:

  • 「POST」アクションが必要な場合は、AutoRedirectMode = RedirectMode.Off を設定します (これにより、PreviousPage 情報が提供されますが、Friendly-Url 以外のページ [例: www.you.com/mypage.aspx] からのみ取得されます)。 Friendly-Url ページ [例: www.you.com/mypage] << no .aspx) にアクセスしようとすると、エラーが発生します。

  • PreviousPage 情報が必要な場合は、Web ページ <%@ PreviousPageType VirtualPath="~/Page1.aspx" %> または OnClick メソッドで Server.Transfer を使用する前の投稿ディレクティブを設定する必要があります。

于 2015-01-08T20:20:53.337 に答える
1

ここでの問題は、私が作業していたテスト サイトにデフォルトでインストールされていた FriendlyUrls が原因でした。FriendlyUrls を無効にしたら、うまくいきました。

于 2014-01-24T08:23:47.620 に答える
-1

以下の記事が参考になると思います。

http://csharpdotnetfreak.blogspot.com/2009/08/cross-page-posting-in-aspnet.html

Cross Page Posting PostBack を使用する方法は 2 つあります。

于 2014-01-24T06:45:25.627 に答える
-1

これが発生する理由は、単純に、postbackurl プロパティを正しく設定していないためです。

CrossPagePosting2.aspx がプログラムのルートにある場合は、postbackurl を次のように変更します。~/CrossPagePosting1.aspx

postbackurl プロパティを使用する場合、 <%@ PreviousPageType %> ディレクティブを追加する必要はありません。PreviousPage.FindControl(id) を使用すると、postbackurl プロパティを使用して投稿されたフォーム要素が検索されます

于 2014-10-02T16:06:40.183 に答える