2009-06-02 49 views
0

代表,這些適用於這些?如果是這樣,怎麼樣?代碼示例,因爲我是這方面的新手。應用程序設計,邏輯分離,是否委託

邏輯分離是我打算實現的,我認爲我的任務在下面是一個完美的候選人。我已經讀過,對象應該是相當獨立的,並且不要硬連線到另一個。

ASPX(頁)

<uc1:Attachment ID="Attachment1" runat="server" /> 
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> 

ASPX.cs(代碼隱藏)

protected void Button1_Click(object sender, EventArgs e) 
{ 
    // Check the files and upload 
} 

ASCX(用戶控件)

<MyControl:Upload ID="Upload1" runat="server" 
AllowedFileExtensions=".zip,.jpg,.jpeg,.doc,.gif,.png,.txt" 
    MaxFileInputsCount="3" 
    OverwriteExistingFiles="false" 
onfileexists="Upload1_FileExists" 
onvalidatingfile="Upload1_ValidatingFile" /> 

ASCX.cs(代碼隱藏)

public Upload AttachmentControl 
{ 
    get { return this.Upload1; } 
} 

上面的任務是一個文件上傳模塊。上傳的控件位於已被拖拽到ASPX頁面的UserControl中。

ASPX頁面上的提交按鈕應該啓動文件上傳過程。 這應該是一個相當普遍的情況,其中頁面將其他信息保存到數據庫並上傳文件。

我從過去的經驗中得到的直覺是通過公共屬性在UserControl中公開上傳控件。 這會將Attachment UserControl綁定到頁面。

我該如何解開這個問題,或許使用代表?

回答

0

視圖需要關於附件控件的什麼信息?附件控件需要知道包含它的視圖是什麼?

我想delegate(Stream uploadContent)可以讓你更進一步解耦,但是如果你使用System.Web.Page模型......解耦的東西似乎很缺乏的動機。

讓視圖接受回調會顛倒應用程序中相應的適當路徑,不是嗎?