我正在将链接加载到gridview中,但是如果它们没有附加http://它会进入我的服务器。所以像点击www.yahoo.com这样的东西会转到http://localhost:1304/.../controls/www.yahoo.com。除了进行字符串操作之外,如何点击链接字段时,如何让浏览器打开一个新窗口。
我已经尝试了asp:hyperlinkfield和templatefields
<asp:TemplateField HeaderText="Link">
<ItemTemplate>
<asp:HyperLink runat="server" Text='<% #(Eval("Link")) %>' NavigateUrl='<% #Eval("Link") %>' />
</ItemTemplate>
</asp:TemplateField>
<%--<asp:HyperLinkField DataTextField="Link" HeaderText="Link" SortExpression="Link" DataNavigateUrlFormatString="{0}" DataNavigateUrlFields="Link" Target="_blank" />--%>
以下是该页面的一些来源。 comcast链接附加到本地目的地,而雅虎一个很好。
<td>15478963</td><td>test data - comcast</td><td><a href="Controls/www.comcast.net" target="_blank">www.comcast.net</a></td><td align="right">12/23/2009</td><td>Justen</td>
</tr><tr style="color:Black;background-color:Gainsboro;">
<td>12345678</td><td>Update works!</td><td><a href="http://www.yahoo.com" target="_blank">http://www.yahoo.com</a></td><td align="right">12/23/2009</td><td>Justen</td>
答案 0 :(得分:3)
此行为(将url附加到本地服务器的末尾)是由浏览器解释URL的方式引起的。例如,要重定向到www.yahoo.com,您必须使用绝对网址,从 http:// 开始。
如果您的链接指向不以 http:// 开头的地址,则浏览器将其解释为 relative url,与当前相关(本地服务器)位置。
因此,您必须进行一些字符串操作,以检查地址是否以 http:// 开头,并在必要时添加。也许你可以在GridView的OnRowDataBound
事件处理程序中完成它
此外,要使链接在浏览器中打开一个新窗口(或选项卡),您应该使用target="_blank"
属性,如上一个答案所述。
答案 1 :(得分:1)
您需要在链接中添加target="_blank"
属性。这将在新窗口中打开任何链接。
请参阅href target attribute文档。