2017-04-21 26 views
0

我有一个按钮,在我的GridView和当用户点击它,它会转到页。但是,如果右键单击它并“打开新选项卡中的链接”,它将进入空白页面。我想要它,当用户右键单击它并“打开新标签中的链接”转到页面。这是我到目前为止的代码:打开ASP的LinkBut​​ton在新标签页

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

回答

1

你不能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 > 

编辑,如果你想要的网址被第一加密创建一个类

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 > 
+0

这似乎是做的工作!但是,您现在如何加密URL,它显示了movieID的编号,例如123,而不是qs = IFIYPQFIEhU%3d。我有的onclick(检查原始代码):SecureQueryString qs = new SecureQueryString(); qs [“ID”] = id.ToString(); 的Response.Redirect( “?viewMovie.aspx.aspx QS =” + qs.ToString()); –

+0

它假设去ASPX?QS = IFIYPQFIEhU%3D,而不是的.aspx?QS = 261 –

+0

@ParbhuBissessar你可以告诉您使用的SecureQueryString哪个库? – Usman

0

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

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

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

有了这个代码,你是隐藏的链接按钮,并使用锚标签来代替。 当您右键单击时,将会调用锚标记中的Href。当你点击链接时,将会触发“postBack”JS方法来调用链接按钮的服务器端事件处理程序。
在那里通过右键单击和左键单击作品。

+0

我不希望链接访问google.com,但希望它去的网页如:viewMovie.aspx QS = –

+0

链接从C#页生成的,它不是一个固定的链接 –

+1

好吗?找到了你。在页面呈现在客户端之前,您能够处理Href值吗?或者由于客户端交互,Href的值是否会发生变化?如果是前者,那么你不需要LinkBut​​ton。使用超链接,在页面呈现之前在服务器端设置Href,超链接将响应点击和右键单击。 – Boney

相关问题