Получение значения сеанса на главной странице - PageLoad - PullRequest
1 голос
/ 19 августа 2011

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

Заранее спасибо.

protected void ddlLanguage_SelectedIndexChanged(object sender, EventArgs e)
    {
        Session["Language"] = ddlLanguage.SelectedValue;
    }

protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {

            ddlLanguage.SelectedValue = Session["Language"].ToString();
        }

Ответы [ 4 ]

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

Вы можете инициализировать переменную сеанса значением по умолчанию внутри события Page_Init.Таким образом, к моменту запуска события Page_Load, по крайней мере, у вас будет значение для проверки.

Кроме того, вы можете просто проверить переменную Session на наличие нулевого значения в событии Page_Load и не пытаться использовать егозначение, если оно действительно равно нулю.

Для этого второго варианта измените свой код на что-то вроде:

protected void Page_Load(object sender, EventArgs e)
{

    if (!IsPostBack)
    {

        ddlLanguage.SelectedValue = Session["Language"] == null ? "0" : Session["Language"].ToString();
    }

Замените ноль в истинном состоянии троичного оператора на любое значение по умолчаниюу вас есть в выпадающем списке.

2 голосов
/ 19 августа 2011

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

 if (Session["Language"] != null)
 {
      ddlLanguage.SelectedValue = Session["Language"].ToString();
 }
1 голос
/ 19 августа 2011

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

Код главной страницы

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Session["culture"] != null)
                ddlLanguage.SelectedValue = Session["culture"].ToString();
            else
            {
                ddlLanguage.SelectedValue = "en-US";
                Session["culture"] = "en-US";
            }
        }
    }

    protected void ddlLanguage_SelectedIndexChanged(object sender, EventArgs e)
    {
        Session["culture"] = ddlLanguage.SelectedValue;
    }

=================

Таким образом я могу сохранить выбранный язык в сеансе и использовать его во всем приложении.

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

Вы можете использовать Page_PreLoad событие, чтобы установить значение переменной сеанса ...

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