Где хранить данные параметров общих действий в приложении asp.net mvc - PullRequest
2 голосов
/ 10 августа 2009

Наше веб-приложение нуждается в одном общем параметре в каждом методе действия.

В нашем случае это идентификатор учетной записи клиента, и нам необходимо поддерживать следующие сценарии

а. Группа пользователей может иметь один и тот же идентификатор учетной записи, который может быть получен из профиля пользователя.

б. Служба поддержки клиентов должна иметь возможность явно указать идентификатор учетной записи клиента, а также должна иметь возможность сменить учетную запись на любой странице

Мы пытаемся не использовать сеанс asp.net для хранения данных такого типа.

Существуют ли другие варианты для хранения и управления такими типами данных общих параметров?

Ответы [ 2 ]

1 голос
/ 10 августа 2009

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

0 голосов
/ 10 августа 2009

Используйте Routing для значения. Поэтому, если вам нужно изменить идентификатор, вы можете использовать другой URL или опубликовать его в качестве параметра.

Всякий раз, когда вам нужно значение, просто спросите его у ValueProvider.
В случае, если он пуст - используйте тот из профиля пользователя.

Конечно, вам лучше написать небольшой метод, который сделает именно это:

// Register route like:
route.MapRoute("ProvidesAccountId", "{controller}/{id}/account{accountId}/{action}.aspx")

// Property on the base controller
protected Account CurrentAccount {
    get {
        var accountId = ValueProvider.GetValue<int?>("accountId"); // GetValue is just a helper
        if (accountId.HasValue)
            return YourRepositor.GetAccountBy(accountId.Value);
        return CurrentUser.Account;
    }
}

Чтобы не использовать учетную запись текущего пользователя, нажмите URL: Профиль / 123 / account / Edit.aspx
Чтобы использовать другую учетную запись, вы можете нажать на URL: Профиль / 123 / account-456 / Edit.aspx

Вы поняли идею.

Приветствия
Дмитрий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...