Параметр сеанса пуст ASP.NET MVC - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь написать страницу «свяжитесь с нами», на которой отображаются некоторые данные, введенные пользователем со страницы входа в систему (страница контактов требует входа в систему). Для этого я использую переменную сеанса: код от логина:

Session["User"] = account.Email;
Session["Password"] = account.Password;
Session["Name"] = account.Name;
return Redirect("/Contact/contact");

Код от контроллера контактов:

public ActionResult Contact()
        {
            // if session user is null (e.i. user has not been logged in) redirects user to login page
            if (Session["User"]==null)
            {
                return Redirect("/Login/login");
            }

            string name = Session["Name"] as string;
            string email = Session["User"] as string;

            Account acc = new Account(name, email);

            return View("contact", acc); // else returns contact html page
        }

Вот как должна отображаться информация:

@model Final_Project.Models.Account
<p><span>Name</span><input class="contact" type="text" name="your_email" value="@Model.Name" /></p>
<p><span>Email Address</span><input class="contact" type="text" name="your_email" value="@Model.Email" /></p>

Но в текстовых полях ничего не отображается. Поскольку отображается страница контакта, переменная Session не может быть нулевой (как в этом случае, если оператор будет выполняться из контроллера, перенаправляя пользователя обратно на страницу входа). Как получить доступ к строкам «Имя» и «Электронная почта» из сеанса?

EDIT: Видимо проблемы были в том, как я передавал значения самой модели. Переменная сеанса не имела никакого отношения к моей проблеме

1 Ответ

0 голосов
/ 14 мая 2019

Проверьте, есть ли у вас конфигурация sessionState на вашем web.config Если это так, когда вы получаете значения Session уже истек.

<sessionState mode="inProc" timeout="30" ></sessionState>

Попробуйте прочитать с HttpContext

var name  = (string)System.Web.HttpContext.Current.Session["Name"];
// the assignment for email is User as you referred?
var email = (string)System.Web.HttpContext.Current.Session["User"];

Отредактированный

проверьте, используете ли вы что-либо из этого и уничтожаете ваш сеанс

Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Session.Abandon();
Session.Clear();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...