我正在尝试让我的网络应用在登录后重定向到用户的个人资料。我对这种语言还不熟悉,但据我所知,我想在成功登录时从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);
}
}
答案 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)传入任何构造函数参数(由它们的接口定义而不是具体类型),这使您的工厂易于测试和模拟。