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”?在新文件中使用上面的代码将其正常运行。新选项卡打开,然后重定向。