Je dois apprendre C # MVC en utilisant LINQ
. Maintenant, je ne sais pas comment envoyer le nom d'utilisateur après la connexion
Comment envoyer le nom d'utilisateur de la base de données pour l'afficher?
<div> Welcome <!--How do I display the Username here? --> </div>
Voir:
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(); } }
4 Réponses :
Vous pouvez enregistrer la valeur dans l'objet ViewBag , ViewData ou TempData et l'afficher sur la vue de la même manière que l'objet Session.
Dans votre cas, je pense que TempData sera bien parce que vous redirigez d'une ActionMethod vers une autre ActionMethod donc.
Veuillez consulter ce lien pour savoir comment utiliser TempData ici a >
Vous avez une vue (la page de réussite), vous devriez donc avoir un ViewModel pour les propriétés de cette page:
@Model SuccessViewModel <div> Welcome @model.Name </div>
Vue:
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); } }
Lorsque votre vérification est réussie, ajoutez le nom d'utilisateur à une session, puis utilisez que session pour afficher le contenu sur le front-end. Ma syntaxe est peut-être un peu fausse mais devrait vous donner une idée.
<div> Welcome @Session["Username"] </div>
Front-end
if (check != null) { Session.Add("Username", check.Name); return RedirectToAction("Success"); }
Je suggère d'utiliser une session car vous pouvez le définir une fois, puis l'utiliser plusieurs fois et pas seulement pour une redirection.
Parce que vous utilisez la redirection, vous devez utiliser TempData
pour conserver votre nom d'utilisateur comme ceci.
<div> Welcome @TempData["UserName"] </div>
À votre avis
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"); }
vous pouvez enregistrer le nom d'utilisateur en session et l'utiliser ultérieurement n'importe où dans votre application