Одинаковые свойства в элементе управления и странице - PullRequest
2 голосов
/ 17 августа 2011

Я создал базовый класс для своих страниц, где я могу получить / установить определенные свойства сеанса.

public class MyBasePage : System.Web.UI.Page
{
    public MyUser SessionUser
    {
        get
        {
            return (MyUser) Session["User"];
        }
        set
        {
            Session["User"] = value;
        }
    }
}

(я знаю, что членство в ASP.NET предоставляет класс пользователя, но я не могу использоватьЧленство по старым причинам атм.)

Теперь я могу легко получить доступ к этим свойствам со всех страниц, но они мне нужны и в некоторых элементах управления.Теперь я вижу два варианта:

  1. Получить страницу из элемента управления и привести ее к MyBasePage.Затем перейдите к свойству.
  2. Дублируйте код в классе BaseControl и унаследуйте от него элемент управления.(очевидно, ошибочен из-за дублированного кода)
  3. Используйте статический класс и поместите туда свойства.(используя HttpContext.Current.Session)
  4. что-то еще?

Какой лучший подход?

Ответы [ 2 ]

3 голосов
/ 17 августа 2011

Я бы определенно выбрал вариант 3 и использовал статический класс. Это избавляет ваши страницы и контроль от необходимости наследования только для простого вызова метода / свойства.

Ваш комментарий к варианту 2 - это то, почему вы не должны были идти к наследственному подходу. Вариант 1 - это просто вариант 2 и усложнение управления им.

0 голосов
/ 17 августа 2011

Если вы используете много переменных сеанса в проекте, я бы предложил иметь класс SessionManager, в котором установлены свойства getter и setter.Таким образом, согласно вашему примеру, как только пользователь войдет в систему, вы можете установить значение сеанса.Теперь вы можете получить доступ к этому значению сеанса из любой точки вашего проекта.

...