我有一个“视图”链接到每行的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://前缀才能工作。现在感到愚蠢:)
答案 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示例