Asp.net 在新选项卡中打开页面将更新两个选项卡

Asp.net 在新选项卡中打开页面将更新两个选项卡,asp.net,Asp.net,我正在处理两个文件,Default.aspx和Beta.aspx 在Default.aspx中,我有一个按钮,可以导航到Beta.aspx <telerik:RadImageButton ID="btn26" runat="server" Skin="Material" Text="26" OnClick="btnConfirm_Click26"> </telerik:RadImageButton> protected void btnConfirm_Click26(

我正在处理两个文件,
Default.aspx
Beta.aspx

Default.aspx
中,我有一个按钮,可以导航到
Beta.aspx

<telerik:RadImageButton ID="btn26" runat="server" Skin="Material" Text="26" OnClick="btnConfirm_Click26">
</telerik:RadImageButton>


protected void btnConfirm_Click26(object sender, EventArgs e)
{
    string url = string.Format("Beta.aspx?year={0}&track={1}&event={2}&car=26&session{3}", hidYear.Value, hidTrack.Value, hidEvent.Value, hidSession.Value);
    Response.Redirect(url);
}

该按钮可以工作,并像我所希望的那样将页面加载到
Beta.aspx
中作为一个新选项卡,但是按钮所在的
Default.aspx
页面也会导航到相同的URL。我希望
Default.aspx
始终保持在同一页面上,我缺少什么?

要打开新选项卡,无需执行服务器往返。您需要将按钮移动到一个单独的html
表单
,跳过aspx代码并使用(客户端)JavaScript处理单击事件,如下所示:

<form id="form2" class="SmallFont" action="Beta.aspx" target="_blank">
    <input type="submit" ID="btn26" Skin="Material" Text="26" />
    <input type="hidden" name="year" value="{0}" />
    <input type="hidden" name="track" value="{1}" />
</form>

或者这样:(由于弹出窗口拦截器的存在,可能无法正常工作)



如果你不喜欢老式的JavaScript,还有更现代的方法,比如jQuery或其他框架等。

要打开一个新标签,不需要做服务器往返。您需要将按钮移动到一个单独的html
表单
,跳过aspx代码并使用(客户端)JavaScript处理单击事件,如下所示:

<form id="form2" class="SmallFont" action="Beta.aspx" target="_blank">
    <input type="submit" ID="btn26" Skin="Material" Text="26" />
    <input type="hidden" name="year" value="{0}" />
    <input type="hidden" name="track" value="{1}" />
</form>

或者这样:(由于弹出窗口拦截器的存在,可能无法正常工作)



如果你不喜欢老式的JavaScript,还有更现代的方式,使用jQuery或其他框架等等。

这应该是一个相当简单的问题,让我们在这里介绍更多细节

default.aspx上有一个表单

<form id="form1" runat="server" target="_blank">
   <asp:Button ID="btn26" runat="server" OnClick="btnConfirm_Click26" Text="26" />
</form>
i、 e.第一个选项卡中的default.aspx表单将提交到同一个default.aspx的新窗口,然后(在同一个第二个选项卡中)重定向到beta.aspx

default.aspx (in first tab) 
                           --> default.aspx (in new tab) --> redirects to beta.aspx
如果您在default.aspx的Page_Load()中没有代码,它应该像在第一个选项卡中一样“保持”,而不会“导航到beta.aspx”。如果在Page_Load()中有代码,请确保在加载default.aspx(而不是重定向到beta.aspx)时,使用
If(!Page.IsPostBack)
仅执行一次代码


如前所述,重定向不需要在服务器上执行,也可以通过客户端脚本执行

这应该是一个相当简单的问题,让我们在这里多说一些细节

default.aspx上有一个表单

<form id="form1" runat="server" target="_blank">
   <asp:Button ID="btn26" runat="server" OnClick="btnConfirm_Click26" Text="26" />
</form>
i、 e.第一个选项卡中的default.aspx表单将提交到同一个default.aspx的新窗口,然后(在同一个第二个选项卡中)重定向到beta.aspx

default.aspx (in first tab) 
                           --> default.aspx (in new tab) --> redirects to beta.aspx
如果您在default.aspx的Page_Load()中没有代码,它应该像在第一个选项卡中一样“保持”,而不会“导航到beta.aspx”。如果在Page_Load()中有代码,请确保在加载default.aspx(而不是重定向到beta.aspx)时,使用
If(!Page.IsPostBack)
仅执行一次代码


如前所述,重定向不需要在服务器上执行,也可以通过客户端脚本执行

因此,我的所有按钮所在的
Default.aspx
应该有两个单独的表单?这确实会打开一个单独的选项卡。但是,所有的
年份、曲目等
数据都保存在另一个表单上,而且按钮似乎无法提取该信息?如果您只将信息提交到Beta.aspx,您可以将这些字段移动到该表单中。如果两者都需要,可以将这些值复制到隐藏字段(js)中,或者将隐藏字段设置为也存在于服务器端并以两种形式填充它们。你更喜欢哪一种(这样我可以修改上面的示例代码)?我真的不明白。该信息正在提交到beta.aspx。带有按钮的表单仅用于选择信息。现在两个.aspx文件中都存在隐藏字段。我觉得必须有一种更简单的方法,让按钮打开一个新选项卡并执行操作。我同意,必须有一种更简单的方法,但我只能知道您显示的代码。如果您提供更多信息,我们可能会找到更好的方法。因此,我的所有按钮所在的
Default.aspx
应该有两个单独的表单?这确实会打开一个单独的选项卡。但是,所有的
年份、曲目等
数据都保存在另一个表单上,而且按钮似乎无法提取该信息?如果您只将信息提交到Beta.aspx,您可以将这些字段移动到该表单中。如果两者都需要,可以将这些值复制到隐藏字段(js)中,或者将隐藏字段设置为也存在于服务器端并以两种形式填充它们。你更喜欢哪一种(这样我可以修改上面的示例代码)?我真的不明白。该信息正在提交到beta.aspx。带有按钮的表单仅用于选择信息。现在两个.aspx文件中都存在隐藏字段。我觉得必须有一种更简单的方法,让按钮打开一个新选项卡并执行操作。我同意,必须有一种更简单的方法,但我只能知道您显示的代码。如果您提供更多信息,我们可能会找到更好的方法。defalut.aspx上的My Page_Load()正在使用
If(!Page.IsPostBack)
,这并没有什么不同。当您按原样执行我的示例代码(将代码复制到全新的Web表单并运行它)时,您是否仍然无法将第一个选项卡导航到“beta.aspx”?在新文件中使用上述代码的行为应与此相同。新选项卡打开,然后重定向。defalut.aspx上的My Page_Load()正在使用
if(!Page.IsPostBack)
这没有什么区别。当您按原样执行我的示例代码(将代码复制到全新的Web表单并运行它)时,您是否仍有问题,无法将第一个选项卡导航到“beta.aspx”?在新文件中使用上面的代码将其正常运行。新选项卡打开,然后重定向。