Мне нужно изучить 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>





Вы можете сохранить значение в объекте ViewBag, Просмотр данных или TempData и отобразить в представлении так же, как объект сеанса.
В вашем случае я думаю, что TempData будет хорош, потому что вы перенаправляете с 1 ActionMethod на другой ActionMethod.
Пожалуйста, проверьте эту ссылку, как вы можете использовать TempData здесь
У вас есть представление (страница успеха), поэтому у вас должна быть 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>
Когда ваша проверка прошла успешно, добавьте имя пользователя в сеанс, а затем используйте сеанс для отображения содержимого на внешнем интерфейсе. Мой синтаксис может быть немного неправильным, но должен дать вам представление.
if (check != null)
{
Session.Add("Username", check.Name);
return RedirectToAction("Success");
}
Внешний интерфейс
<div>
Welcome @Session["Username"]
</div>
Я предлагаю использовать сеанс, потому что вы можете установить его один раз, а затем использовать несколько раз, а не только для одного перенаправления.
Поскольку вы используете перенаправление, вам нужно использовать 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>
вы можете сохранить имя пользователя в сеансе и использовать его позже в любом месте вашего приложения.