如何在C# ASP.NET中不回传页面的情况下从另一个页面的LinkButton点击调用按钮的点击事件

5

当我点击右上角的绿色按钮时,页面数据将保持不变。新窗口将为另一个功能打开

单击链接按钮后,即左侧的`AppointMentScheduler',我的数据将被清除

我在masterpage中有一个LinkButton,单击该按钮后,我将重定向到例如Page1.aspx。 在Page1.aspx上,我有一个button1。 单击button1后,我会打开新窗口,而不会影响Page1.aspx的数据。

但是,当我单击来自masterpageLinkButton,重定向到Page1.aspx并从代码后面单击button1时,Page1.aspx的数据会更改。

如何防止这种情况发生。 我提供我的代码。

Masterpage上的LinkButton:

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

LinkButton的点击事件:

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

重定向页面(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>

在PhoneMessage.aspx页面上,RaisPostBack方法:
protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument)
        {
            try
            {
                base.RaisePostBackEvent(source, eventArgument);
            }
            catch (Exception ex)
            {


            }

.

.

附注:当我点击 btnScheduleAppointment 按钮时,source 将变为 Schedule Appointments,而如果我点击 lnkAppointMentsource 将是 <span>Appointment Scheduler </span> 即使我在点击 lnkAppointMent 时调用 btnScheduleAppointment

按钮的点击事件:

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;
        }

如果需要澄清,请留言评论。

1个回答

2

我花了一些时间模拟了你的问题。你尝试过在Page1.aspx加载后修改LinkButton的href或属性吗?

我假设你的Page1.aspx是你的PhoneMessage.aspx,所以当你从主页面点击lnkAppointMent时,它会跳转到“PhoneMessage.aspx”并执行该方法,然后如果你再次点击它,它只会进行回发而不是像之前那样执行操作,基本上,你需要重新定向到“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,并且在没有postback的情况下执行相同的操作。这不是最优雅的解决方案,但在您的情况下可以胜任。只需确保有Session["PhoneCenter"] = "Appointment"; 所以这不是您问题的答案,但我认为它是您问题的解决方案。
它对我有用,希望对你有所帮助!让我知道你的想法。 enter image description here

感谢您的努力,先生。这里的“NoExec”是什么意思? - Dinav Ahire
string script = String.Format("openNewWin('" + "phonescheduler.aspx" + "')"); ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "openNewWin", script, true); - Dinav Ahire
我在 PhoneMessage.aspx 页面加载时尝试了这个方法。使用它后,我的页面数据没有被清除。 - Dinav Ahire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接