2010-07-26 48 views
1

我正在嘗試顯示超鏈接中文件夾的內容。我也使用masterpage。超鏈接不會顯示在內容頁面中。該怎麼做?我知道我們可以在Windows窗體中使用像 TextBox.Location = new Point(100,100);如何在運行時在網頁中放置超鏈接字段?

但如何在網頁上做...請有人建議我..

我在Page_Load中的編碼是

protected void Page_Load(object sender, EventArgs e) 
{ 
    DirectoryInfo di = new DirectoryInfo(Server.MapPath("~/ProjectsUpload")); 
    int i = 0; 
    foreach (FileInfo fi in di.GetFiles()) 
    { 
     HyperLink HL = new HyperLink(); 
     HL.ID = "HyperLink" + i++; 
     HL.Text = fi.Name; 
     HL.NavigateUrl = "downloading.aspx?file=" + fi.Name; 
     Page.Controls.Add(HL); 
     Page.Controls.Add(new LiteralControl("<br/>")); 
    } 
} 
+0

看起來應該一竅不通。調試問題的幾個問題:1)你肯定會繞過這個循環嗎? 2)如果你嘗試添加一個靜態鏈接(即沒有所有的FS訪問),那麼這是否工作? 3)頁面源顯示什麼,你期望這些出現? Coudl他們出現在錯誤的地方,他們正在隱藏或什麼... – Chris 2010-07-26 13:34:34

回答

0

你用調試器來逐步通過循環來驗證它處理至少一個文件?

除了將鏈接添加到Page.Controls之外,您可以在頁面上放置一個列表控件,然後在列表項中添加每個鏈接。然後你就會知道他們應該出現在頁面上的哪個位置。

+0

嗨卡爾感謝您的建議。我的觀點是,如果我不使用masterpage,我可以看到超鏈接。但如果我使用masterpage鏈接沒有顯示。如何解決這個問題? – naveen 2010-07-26 13:41:31

2

您不能直接將它添加到Page.Controls。您必須將其添加到頁面上的ContentPlaceHolder

+0

ContentPlaceHolder?據我所知,它應該是一個PlaceHolder控件。 – XIII 2010-07-26 14:00:20

+0

@XIII - 只要它位於ContentPlaceHolder中,他也可以使用PlaceHolder。由於他使用母版頁面,所以他想看到的任何內容都需要放在其中一個。 – David 2010-07-26 14:04:38

0

在頁面的內容區域創建一個面板或標籤,並將您的超鏈接添加到面板的Controls集合中。

(通過代碼加強檢查IIS應用程序是否實際列舉目錄中的任何文件將有助於太。)

1

而是動態地創建控件,這是相當混亂,而且容易出錯的,你有沒有考慮過使用一個asp:Repeater控制和綁定文件直接給它?喜歡的東西:

<asp:Repeater ID="RepeaterFiles" runat="server"> 
    <ItemTemplate> 
     <asp:HyperLink runat="server" Text='<%# Container.DataItem %>' 
      NavigateUrl='<%# String.Format("downloading.aspx?file={0}", Container.DataItem)%>' /> 
     <br /> 
    </ItemTemplate> 
</asp:Repeater> 

並在後面的代碼:

DirectoryInfo di = new DirectoryInfo(Server.MapPath("~/ProjectsUpload")); 
RepeaterFiles.DataSource = di.GetFiles(); 
RepeaterFiles.DataBind(); 

這樣,你可以使用聲明加價來控制佈局,保持邏輯的代碼隱藏。

+0

嗨丹感謝您的建議。我會嘗試這一個。 – naveen 2010-07-26 14:01:57

1

把你的頁面上的佔位符控制:

<asp:PlaceHolder runat="server" ID="ph" /> 

在後面的代碼一樣寫:

HyperLink HL = new HyperLink(); 
HL.ID = "HyperLink" + i++; 
HL.Text = fi.Name; 
HL.NavigateUrl = "downloading.aspx?file=" + fi.Name; 
ph.Controls.Add(HL); 
ph.Controls.Add(new Literal { Text = "<br/>"}); 

我正在上最後一行來設置使用新C#3特點Text屬性。

相關問題