在ASP.NET MVC 5中登录后重定向到用户配置文件

时间:2017-02-25 17:31:08

标签: c# asp.net asp.net-mvc redirect login

我正在尝试让我的网络应用在登录后重定向到用户的个人资料。我对这种语言还不熟悉,但据我所知,我想在成功登录时从AccountController.cs调用View(~/Views/Manage/Index.cshtml", user) user类型为IndexViewModel。

我不确定究竟打电话来让它发挥作用。我正在关注Karate教程,它帮助我解决了null异常,但我不知道如何为当前登录的用户获取模型。有人可以告诉我我可能在寻找什么,或者有没有更好的方法来实现这一目标?我看了一遍,似乎找不到我需要的东西。

我正在使用默认的ASP.NET模板,它将LoginViewModel作为登录功能的参数,所以我想我可以从那里拉出来吗?

编辑:验证的代码:

    // POST: /Account/Login
    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }

        // This doesn't count login failures towards account lockout
        // To enable password failures to trigger account lockout, change to shouldLockout: true
        var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
        switch (result)
        {
            case SignInStatus.Success:
                return RedirectToAction("Index");//Been playing with this line
            case SignInStatus.LockedOut:
                return View("Lockout");
            case SignInStatus.RequiresVerification:
                return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return View(model);
        }
    }

3 个答案:

答案 0 :(得分:1)

RedirectToAction为应用程序中的特定操作/控制器构造重定向URL,并使用路由表生成正确的URL。 RedirectToAction使浏览器在您的应用程序中接收302重定向,并使您可以更轻松地使用路由表。在您的情况下,使用RedirctToAction(“索引”,“用户”)而不是view()。有关详细信息,请参阅本文https://msdn.microsoft.com/en-us/library/system.web.mvc.controller.redirecttoaction(v=vs.118).aspx

答案 1 :(得分:0)

您需要创建一个公开用户个人资料对象的模型,然后在视图的顶部定义此模型。

答案 2 :(得分:0)

原谅我,我正在打电话,但基本上是这样;

工厂类,例如UserModelFactory Method.eg CreateModel

此方法使用所需的值实例化模型。

理想情况下使用DI框架(例如AutoFac,Ninject)传入任何构造函数参数(由它们的接口定义而不是具体类型),这使您的工厂易于测试和模拟。