2009-06-02 48 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模型......解耦的东西似乎很缺乏的动机。

让视图接受回调会颠倒应用程序中相应的适当路径,不是吗?