2
votes

Comment afficher le nom d'utilisateur après la connexion

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();
    }
}


1 commentaires

vous pouvez enregistrer le nom d'utilisateur en session et l'utiliser ultérieurement n'importe où dans votre application


4 Réponses :


0
votes

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


0 commentaires

0
votes

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);
    }
}


0 commentaires

0
votes

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.


0 commentaires

3
votes

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");
    }


0 commentaires