5

右上の緑色のボタンをクリックすると、ページ データはそのまま残ります。新しいウィンドウが開き、別の機能が表示されます。

左側のリンクボタンをクリックした後、「AppointMentScheduler」、私のデータがフラッシュされます

私はLinkBut​​ton のオンとオンのクリックを持っています。たとえば、にリダイレクトしていLinkButtonます。Page1.aspx には、. それをクリックすると、新しいウィンドウが開きますが、のデータには影響しません。masterpagePage1.aspxbutton1button1Page1.aspx

しかし、マスターページをクリックすると、コードビハインドとの間LinkButtonでリダイレクトされ、クリックすると、のデータが変更されます。Page1.aspxbutton1Page1.aspx

これを防ぐ方法。私は自分のコードを提供しています。

マスターページの LinkBut​​ton :

<asp:LinkButton ID="lnkAppointMent" runat="server" OnClick="lnkAppointMent_Click"><span>Appointment Scheduler </span></asp:LinkButton>

LinkBut​​ton のクリックイベント:

protected void lnkAppointMent_Click(object sender, EventArgs e)
        {
            Session["PhoneCenter"] = "Appointment";
            Response.Redirect("PhoneMessage.aspx");
        }

リダイレクト ページの PageLoad(PhoneMessage.aspx) :

    protected void Page_Load(object sender, EventArgs e)
                {
                    fillCustomTypeMessages();            
                    if (!Page.IsPostBack)
                    {
                        .

    .

    .
                        else if (Session["PhoneCenter"].ToString() == "Appointment")
                        {
                            btnScheduleAppointments_Click(btnScheduleAppointments, null);
                        }

.

.

.

PhoneMessage.aspx のボタン:

<div style="float: right; padding-right: 120px">
                                <asp:Button ID="btnScheduleAppointments" runat="server" OnClick="btnScheduleAppointments_Click"
                                    CssClass="button" Text="Schedule Appointments" ToolTip="Open appointment scheduler" />
                            </div>

RaisPostBackPhoneMessage.aspx のメソッド:

protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument)
        {
            try
            {
                base.RaisePostBackEvent(source, eventArgument);
            }
            catch (Exception ex)
            {


            }

.

.

ps: をクリックすると が表示されbtnScheduleAppointment、をクリックすると が表示されます。sourceSchedule AppointmentslnkAppointMentsource<span>Appointment Scheduler </span>btnScheduleAppointmentlnkAppointMent

ボタンのクリックイベント:

protected void btnScheduleAppointments_Click(object sender, EventArgs e)
        {
            if (!Permissions.checkPermissions(Session["employeeloggedin"].ToString(), "PHMSGVMD"))
            {
                ScriptManager.RegisterStartupScript(this, Page.GetType(), "OnLoad", "alert('You must have the Phone Messages: View and Modify permission to schedule appointments!')", true);
            }
            else
            {
                string script = String.Format("openNewWin('" + "phonescheduler.aspx" + "')");
                ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "openNewWin", script, true);
            }

        }

脚本 :

function openNewWin(url)
        {
            alert(url);
            var open_link = window.open('', '_blank');
            open_link.location = url;
        }

説明が必要です。コメントしてください。

4

1 に答える 1

2

問題をシミュレートするのに時間がかかりました。Page1.aspxが読み込まれた後、LinkBut​​ton の href または属性を変更しようとしましたか?

私はあなたの Page1.aspx が PhoneMessage.aspx であると想定しているので、マスター ページから lnkAppointMent をクリックすると、「PhoneMessage.aspx」に移動してメソッドを実行します。もう一度クリックすると、do ではなく post back のみが実行されます。基本的に、「PhoneMessage.aspx」に再度リダイレクトする必要があります。

では、この部分を次のように変更しないでください。

                    else if (Session["PhoneCenter"].ToString() == "Appointment")
                    {
                ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "NoExec", String.Format("document.getElementById('lnkAppointMent').href=window.location.href;"), true);
                btnScheduleAppointments_Click(btnScheduleAppointments, null);
                    }

これにより、リンクが Page1.aspx に再度リダイレクトされ、ポストバックなしで同じことが行われます。これは最もエレガントなソリューションではありませんが、あなたの場合はうまくいきます。Session["PhoneCenter"] = "Appointment";であることを確認してください。

したがって、それはあなたの質問に対する答えではありませんが、あなたの問題の解決策だと思います。

それは私のために働いた、私はそれが役立つことを願っています! どう考えているか教えてください。

ここに画像の説明を入力

于 2015-08-01T10:30:10.243 に答える