在新选项卡中打开 asp 链接按钮



我的网格视图中有一个按钮,当用户单击它时,它会转到页面。但是,如果您右键单击它并"在新选项卡中打开链接",它会进入空白页。我希望当用户右键单击它并"在新选项卡中打开链接"以转到该页面时。这是我到目前为止的代码:

.aspx

<asp:LinkButton ID="lnkEditbtn" data-toggle="tooltip" title="View Request" OnClick="lnkEditbtn_Click" runat="server" class="btn btn-primary btn-sm" Text="<%# bind('ticketID')%>"></asp:LinkButton>    

C#

protected void lnkEditbtn_Click(object sender, EventArgs e)
{
GridViewRow gvr = (GridViewRow)(((Control)sender).NamingContainer);
Label lblid = (Label)gvr.FindControl("lblMovie");
int id = Convert.ToInt32(lblid.Text.ToString());
SecureQueryString qs = new SecureQueryString();
qs["ID"] = id.ToString();
Response.Redirect("viewMovie.aspx?qs=" + qs.ToString());
}

你不能用linkbutton做到这一点,因为它在你点击它后redirects到所需的视图,但你可以使用asp:HyperLink并设置它的值,如

<asp:HyperLink ID="lnkEditbtn" data-toggle="tooltip" Text="View Request"  runat="server" NavigateUrl='<%# Eval("ticketID", "~/viewMovie.aspx?qs={0}")  %>' class="btn btn-primary btn-sm" ></asp:HyperLink > 

编辑

如果要先加密 URL,请先创建一个类

public static class encrypt
{
public static string encvalue(int id)
{
SecureQueryString qs = new SecureQueryString();
qs["ID"] = id.ToString();
return  qs.ToString()
}
}

您的超链接将是

<asp:HyperLink ID="lnkEditbtn" data-toggle="tooltip" Text="View Request"  runat="server" NavigateUrl='<%# String.Format("~/viewMovie.aspx?qs={0}",encrypt.encvalue(Convert.ToInt32(Eval("ticketID"))))  %>' class="btn btn-primary btn-sm" ></asp:HyperLink > 

服务器端的链接按钮被渲染到客户端的超链接中,href="javascript:__doPostBack('lnkEditbtn','')"href",这只不过是从链接按钮回发到服务器的。因此,当您右键单击并在新选项卡中打开链接时,它会发布到服务器,因此它会在新选项卡中显示为空白页。

您可以做的是使用类似于以下代码的代码:

<style>
.hide {
display:none;
}
</style>
<script>        
function postBack() {
__doPostBack('lnkEditbtn', '');
return false;
}
</script>
<asp:LinkButton ID="lnkEditbtn" runat="server" OnClick="lnkEditbtn_Click" Text="Link" CssClass="hide"></asp:LinkButton>
<a href="http://www.google.com" onclick="return postBack();">Link</a>

protected void lnkEditbtn_Click(object sender, EventArgs e)
{
var linkButton = (Control)sender as LinkButton;
}

使用此代码,您将隐藏链接按钮并改用 Anchor 标记。 右键单击时将调用锚标记中的 Href。当您单击链接时,将触发"postBack"JS方法,该方法调用链接按钮的服务器端事件处理程序。
并且通过右键单击和左键单击都可以工作。

最新更新