как отобразить имя пользователя после входа в систему - PullRequest
1 голос
/ 23 апреля 2019

Я изучаю C # MVC, используя linq.Теперь я не знаю, как отправить имя пользователя после входа в систему

Как отправить имя пользователя из базы данных для просмотра?

public ActionResult Login(Login log)
{
    using (var dbs = new guruEntities())
    {
        var check = dbs.Logins.FirstOrDefault(x => x.Name == log.Name && x.Password == log.Password);
        if (check != null)
        {
            return RedirectToAction("Success");
        }
        else
        {
            ViewBag.msg = "Wrong data";
        }
    }
    return View("Login");
}

public ActionResult Success(Login log)
{
    using (var dbs = new guruEntities())
    {
        var check = dbs.Logins.FirstOrDefault(x => x.Name == log.Name && x.Password == log.Password);

        return View();
    }
}

Просмотр:

<div> 
    Welcome <!--How do I display the Username here? -->
</div>

Ответы [ 4 ]

3 голосов
/ 23 апреля 2019

Поскольку вы используете редирект, вам нужно использовать TempData, чтобы сохранить ваше имя пользователя в таком виде.

 public ActionResult Login(Login log)
    {
        using (var dbs = new guruEntities())
        {
            var check = dbs.Logins.FirstOrDefault(x => x.Name == log.Name && x.Password == log.Password);
            if (check != null)
            {
                TempData["UserName"] = check.Name;
                return RedirectToAction("Success");
            }
            else
            {
                ViewBag.msg = "Wrong data";
            }
        }
        return View("Login");
    }

На ваш взгляд

<div> 
    Welcome @TempData["UserName"]
</div>
0 голосов
/ 23 апреля 2019

У вас есть представление (страница успеха), поэтому вы должны иметь ViewModel для свойств на этой странице:

public class SuccessViewModel 
{
    public string Name {get;set;}
}

public ActionResult Success(Login log)
{
    using (var dbs = new guruEntities())
    {
    var check = dbs.Logins.FirstOrDefault(x => x.Name == log.Name && x.Password == log.Password);

        var vm = new SuccessViewModel { Name = log.Name };

        return View(vm);
    }
}

Представление:

@Model SuccessViewModel
<div> 
    Welcome @model.Name 
</div>
0 голосов
/ 23 апреля 2019

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

if (check != null)
{
    Session.Add("Username", check.Name);
    return RedirectToAction("Success");
}

Фронтальный

<div> 
    Welcome @Session["Username"]
</div>

Я предлагаю использовать сеанс, потому что вы можете установить его один раз, а затем использовать его несколько раз, а не только для одного перенаправления.

0 голосов
/ 23 апреля 2019

Вы можете сохранить значение в ViewBag , ViewData или TempData объект и отобразить в представлении так же, как объект Session.

В вашем случае, я думаю, что TempData будет хорошо, потому что вы перенаправляете с 1 ActionMethod на другой ActionMethod, так что.

Пожалуйста, проверьте эту ссылку, как вы можете использовать TempData здесь

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