2009-08-22 4 views
3

각 행의 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를해야한다고 생각. 지금 어리석은 느낌 :

답변

5

링크 작동하는 http:// 프리픽스를 가져야한다고 생각.

3

리디렉션 할 URL에 대한 액세스 권한이 리소스 객체에 있습니까? 그렇다면 Response.Redirect를 사용할 수 있습니다.

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

yes.it은 resource.value에 저장됩니다. – krishna

+0

위대한 경우 다음 Response.Redirect (resource.value); 그것을해야합니다. :) –

+0

@ David. 값에 http : // 접두사가 있어야합니다. 그것이 내가 일찍 일하지 않는 이유 였어. 너의 도움에 감사한다. – krishna

0

항목 템플릿에 asp.net 하이퍼 링크를 추가하십시오. 그런 다음 RowDataBound 이벤트를 처리하여 하이퍼 링크의 NavigateURL 속성을 동적으로 변경합니다. 이렇게하면 우편 배달부를 피할 수 있습니다.

<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 예

+0

resourcefile.aspx를 다른 몇 군데에서 사용합니다. 그 페이지의 코드 뒤에 파일이나 URL이 있는지 파악하는 논리를 둡니다. 링크가 파일인지 URL인지 여부는 동일합니다. – krishna