在新标签页中打开 asp LinkBut​​ton

Open asp LinkButton in a new tab

我的 gridview 中有一个按钮,当用户单击它时,它会转到页面。但是,如果您右键单击它并 "open link in a new tab" 它会转到一个空白页面。我想要它,所以当用户右键单击它并 "open link in a new tab" 转到该页面时。这是我到目前为止的代码:

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 被加密,请先创建一个 class

 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 > 
服务器端的

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

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

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

使用此代码,您将隐藏 link 按钮并改用锚标记。 Anchor 标签中的 href 会在你点击鼠标右键时被调用。当您单击 link 时,将触发 "postBack" JS 方法调用 Link 按钮的服务器端事件处理程序。
通过右键单击和左键单击都可以。