我正在使用linq学习C#MVC。现在我不知道登录后如何发送用户名
如何从数据库发送用户名进行查看?
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>
答案 0 :(得分:2)
因为您使用重定向,所以需要使用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>
答案 1 :(得分:0)
您可以将值保存在 ViewBag , ViewData 或 TempData 对象中,并在与Session对象相同的视图上显示。
在您的情况下,我认为TempData会很好,因为您正从1个ActionMethod重定向到另一个ActionMethod。
请检查此链接,如何使用TempData here
答案 2 :(得分:0)
您有一个视图(成功页面),因此该页面上的属性应该具有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>
答案 3 :(得分:0)
检查成功后,将用户名添加到会话中,然后使用than会话在前端显示内容。我的语法可能有点错误,但应该可以给您一个提示。
if (check != null)
{
Session.Add("Username", check.Name);
return RedirectToAction("Success");
}
前端
<div>
Welcome @Session["Username"]
</div>
我建议使用会话,因为您可以设置一次,然后多次使用,而不仅仅是一次重定向。