如果是超链接,请转到外部网站

时间:2009-08-22 04:45:55

标签: asp.net

我有一个“视图”链接到每行的gridview中的aspx页面。

取决于资源的类型1)文件或2)超链接,它应该下载文件或转到提到的超链接。

<asp:TemplateField HeaderText="View">
                <ItemTemplate>
                    <a id="View" href="../resources/ResourceFile.aspx?Id=<%# Eval("Id")%>" target="_blank">View</a>
                </ItemTemplate>
    </asp:TemplateField>

我让它适用于文件类型,但如果它是超链接,如何重定向到“www.yahoo.com”等外部链接。

在背后的代码中

if(resource.ResourceType.ToLower().Equals("hyperlink")){
                    // what should i do here?
               // the link is stored in resource.value
                }

编辑:认为链接应该有一个http://前缀才能工作。现在感到愚蠢:)

3 个答案:

答案 0 :(得分:6)

认为链接应该有一个http://前缀。

答案 1 :(得分:3)

资源对象是否可以访问您要重定向到的URL?如果是这样,您可以使用Response.Redirect。

if(resource.ResourceType.ToLower().Equals("hyperlink")){
   Response.Redirect(resource.Url);
}

答案 2 :(得分:0)

向项目模板添加asp.net超链接。然后处理RowDataBound事件以动态更改超链接的NavigateURL属性。这样就可以避免使用postpack。

<asp:TemplateField HeaderText="View">
    <ItemTemplate>
        <asp:Hyperlink runat="server" id="View" target="_blank">View</a>
    </ItemTemplate>
</asp:TemplateField>

void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
        HyperLink hl = (HyperLink)e.Row.FindControl("View");
        hl.NavigateUrl = "Link to file or url based on resource type";
    }
}

[http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound.aspx][1]

[1]:MSDN示例