Должен этот код в код позади или отдельный класс?


Я разрабатываю войти на страницу, где пользователи могут выбрать или создать соответствующий организации, когда они подписывают вверх. Там может быть либо 1 пользователя в организации или у многих пользователей в организации, это определяется во время выполнения программы через веб.конфиг.

У меня есть отдельный проект, который обрабатывает все Создание учетной записи пользователя. Я не знаю, если этот код должен быть в проекте "веб-формы" или проект создания учетной записи пользователя, поскольку он обусловлен выбор пользователя в GUI?

    private IpasLogOnManagement.IpasOrganization EnsureOrganizationExists()
    {
        IpasLogOnManagement.IpasOrganization organization = null;

        if (OrganizationsSeparateFromUsers)
        {
            if (lstOrganizations.SelectedIndex == -1)
            {
                try
                {
                    organization = organizationProvider.SearchForOrganizationByName(txtOrganizationName.Text);
                }
                catch (IndexOutOfRangeException)
                {
                    //Organization does not exist, so create it
                    organization = manager.CreateOrganization(txtOrganizationName.Text);
                }
            }
            else
            {
                string selectedName = lstOrganizations.Items[lstOrganizations.SelectedIndex].Text;
                organization = organizationProvider.SearchForOrganizationByName(selectedName);
            }
        }
        else
        {
            organization = manager.CreateOrganization(txtEmail.Text);
        }
        return organization;
    }


256
4
задан 25 августа 2011 в 04:08 Источник Поделиться
Комментарии
3 ответа

Поскольку у вас действительно есть бизнес-уровня, вот где я положил его. Вы должны позволить бизнес-уровня рукоятка в поиске/создании организации, поэтому все веб-формах код должен сделать, это попросить IpasLogOnManagement.IpasOrganization объекта на основе имени пользователя, выбранного (lstOrganizations) или введенного (txtOrganizationName).

2
ответ дан 25 августа 2011 в 06:08 Источник Поделиться

Ваш надежный кодер нос водить правильно на этот вопрос, разделение интересов государства, вы должны иметь их в различных модулях, и я не могу не согласиться. Пользовательский интерфейс должен беспокоиться о представлении пользовательского интерфейса, и, проходя по деятельности пользователя в соответствующую другими модулями. Когда соц используется, ваши отдельные модули могут использоваться более чем одна UI (или интерфейса модулей).

2
ответ дан 25 августа 2011 в 06:08 Источник Поделиться

Часть этого Кодекса, могут быть перенесены на бизнес-логику.
Я бы переписать этот метод, как это:
Менеджер (БЛЛ):

    public IpasLogOnManagement.IpasOrganization FindOrganizationByName(string name)
{
IpasLogOnManagement.IpasOrganization result = null;
try
{
result = organizationProvider.SearchForOrganizationByName(name);
}
catch (IndexOutOfRangeException)
{
result = null;
}
return result;
}

Пользовательский интерфейс (форму):

   private string GetSelectedOrganizationName()
{
string result = txtEmail.Text;
if (OrganizationsSeparateFromUsers)
{
if (lstOrganizations.SelectedIndex == -1)
{
result = txtOrganizationName.Text;
}
else
{
result = lstOrganizations.Items[lstOrganizations.SelectedIndex].Text;
}
}
return result;
}

//Instead of 'EnsureOrganizationExists'
private IpasLogOnManagement.IpasOrganization GetSelectedOrganization()
{
var organizationName = GetSelectedOrganizationName();
var organization = manager.FindOrganizationByName(organizationName);
if (organization == null)
{
organization = manager.CreateOrganization(organizationName);
}
return organization;
}

Пару заметок:
- Я изменил имя метода из EnsureOrganizationExists в GetSelectedOrganization.
- Я хотел бы рассмотреть другой способ проверить, если организация существует. Это не правильно, чтобы поймать исключение определенного типа для этого.

0
ответ дан 26 августа 2011 в 08:08 Источник Поделиться