加载到我的gridview中的链接尝试导航到我的本地服务器

时间:2009-12-29 15:36:18

标签: c# asp.net gridview

我正在将链接加载到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>

2 个答案:

答案 0 :(得分:3)

此行为(将url附加到本地服务器的末尾)是由浏览器解释URL的方式引起的。例如,要重定向到www.yahoo.com,您必须使用绝对网址,从 http:// 开始。

如果您的链接指向不以 http:// 开头的地址,则浏览器将其解释为 relative url,与当前相关(本地服务器)位置。

因此,您必须进行一些字符串操作,以检查地址是否以 http:// 开头,并在必要时添加。也许你可以在GridView的OnRowDataBound事件处理程序中完成它

此外,要使链接在浏览器中打开一个新窗口(或选项卡),您应该使用target="_blank"属性,如上一个答案所述。

答案 1 :(得分:1)

您需要在链接中添加target="_blank"属性。这将在新窗口中打开任何链接。

请参阅href target attribute文档。