0

ここにポストバックを行うボタン

        <asp:LinkButton runat="server" ID="btnBestPrice"  OnClick="btnSearchBestPrice_Click">Search Best Price</asp:LinkButton>

このボタンがページ上でクリックされたと仮定します

http://localhost:47207/Default?ClusterId=131

ポストバックが完了した後、ページはまだ

http://localhost:47207/Default?ClusterId=131

ただし、ポストバック後、URLを

http://localhost:47207/Default

それは可能ですか?

リダイレクトを行うと、ポストバック イベントが失われます。私はまだポストバックイベントを完全にうまく処理したいと思っています。どういうわけか、ポストバック URL をクライアント側のページの生の URL に設定できるとしたら、それとも?

asp.net 4.5 web フォーム c#

4

1 に答える 1

0

ポストバックがユーザーに何らかの情報を表示していると思いますが、プロセスを中断せずに URL を変更する必要があります。

まず、サーバー側で URL を変更すると、ブラウザはそれを新しいページとして扱い、新しいリクエストを行うことを理解する必要があります。Response.Redirect は基本的に、別のページに移動する時が来たことをブラウザーに伝えます。そのため、同じリクエストのままで URL を変更することはできません。(Server.Transfer は同じ URL に残っていますが、別のページであり、必要なものではありません)

だから私はあなたのために2つの解決策を持っています.次の解決策は私には理にかなっていますが、まだページをリダイレクトしています:

protected void Page_Load(object sender, EventArgs e) {
    if (Session["ClusterId"] != null) {
        try {
            int ClusterId = int.Parse(Session["ClusterId"]);
            // Code here
        } catch { }
        Session.Remove("ClusterId");
        return;
    }
}

protected void btnSearchBestPrice_Click(object sender, EventArgs e) {
    int ClusterId = int.Parse(Request["ClusterId"]);
    Session.Add("ClusterId", ClusterId.ToString());
    Response.Redirect("~/Default");
}

Redirect と Session を使用せずに btnSearchBestPrice_Click イベントですべてのアクションを実行し、JavaScript ページ準備完了イベントをバインドし、history.pushState を呼び出し、フォーム要素の action 属性の不要なパラメーターを消去する別のソリューションを次に示します。

于 2016-08-23T06:15:52.983 に答える