Дизайн приложения, разделенная логика, делегат или нет - PullRequest
0 голосов
/ 03 июня 2009

Делегаты, будут ли они применяться здесь? Если так, то как? Примеры кода, так как я новичок в этой области.

Логическое разделение - это то, что я намерен реализовать, и я думаю, что моя задача, представленная ниже, была бы идеальным кандидатом. Я читал, что объекты должны быть достаточно независимыми и не должны быть жестко связаны друг с другом.

ASPX (Страница)

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

ASPX.cs (Codebehind)

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

ASCX (UserControl)

<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 (Codebehind)

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

Задача выше - модуль загрузки файлов. Элемент управления, выполняющий загрузку, находится в пользовательском элементе управления, перетащенном на страницу ASPX.

Кнопка «Отправить» на странице ASPX должна запустить процесс загрузки файла. Это должен быть довольно распространенный сценарий, когда Страница сохраняет другую информацию в базу данных, а также загружает файлы.

Мой инстинкт из прошлого опыта заключался в том, чтобы выставить элемент управления Upload в UserControl через публичное свойство. Это связало бы UserControl вложения со страницей.

Как я могу развязать это, возможно, с использованием делегатов?

1 Ответ

0 голосов
/ 03 июня 2009

Какая информация нужна представлению об управлении вложениями? Что должен знать элемент управления Attachment о представлении, которое его содержит?

Я полагаю, что delegate(Stream uploadContent) может позволить вам отделить это дальше, но если вы используете модель System.Web.Page ... мотивация отделить вещи, которые, кажется, отсутствуют.

Наличие представления, принимающего обратный вызов, инвертирует соответствующий путь зависимости в вашем приложении, не так ли?

...