我意识到这是一个非常基本且可能是愚蠢的问题。
我是第一次在asp.net中建立一个网站,而RedirectToAction遇到了麻烦。
我添加了一个cshtml页面来测试重定向到它,但是找不到该文件。
在〜/查看/共享下
我添加了Test.cshtml。
在验证登录/身份验证后,我尝试使用以下方法更新该方法。
[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("Test", "Home");
//return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
return RedirectToLocal(returnUrl);
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}
我已经添加了以下行,如上所示。
RedirectToAction("Test", "Home");
但是,每次我尝试运行代码时,都会在“ /”应用程序中收到服务器错误。
然后说它找不到/ Home / Test ..
意识到这是我第一次尝试将asp.net和MVC与其一起使用,我有点困惑为什么简单的重定向语句无法找到该网页。
我在干嘛?
通过返回RedirectToAction("Test", "Home")
,您实际上是在重定向到操作-而不是在设置视图时重定向到视图Test.cshtml
。要响应/ home / test,您将需要一个带有Test操作的HomeController对象来处理请求。要仅由于共享而返回视图,可以使用return方法View("Test")
,该方法将在共享目录中找到test.cshtml文件。
MVC严格按照约定进行操作。如果您想/Home/Test
响应重定向请求(特别是`RedirectToAction(“ Test”,“ Home”),则需要注意以下几点:
HomeController
控制器(并假定使用{ControllerName} / {ActionName}的默认MVC路由Test
返回视图的操作方法(即使return View()
很好)本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句