我意识到这是一个非常基本的,可能是愚蠢的问题。
我是第一次在asp.net上组建一个网站,我遇到了RedirectToAction问题。
我已经添加了一个cshtml页面来测试重定向到,并且无法找到该文件。
在〜/ View / Shared
下我已经添加了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");
然而,每次我尝试运行代码时,我都会得到一个 &#39; /&#39;中的服务器错误应用
然后说它找不到/ Home / Test ..
意识到这是我第一次尝试使用asp.net和MVC,我有点困惑为什么一个简单的重定向语句无法找到该网页。
我在做什么愚蠢的?
答案 0 :(得分:2)
通过返回RedirectToAction("Test", "Home")
,您实际上是在设置Test.cshtml
时重定向到某个操作,而不是视图。要响应/ home / test,您需要一个带有Test操作的HomeController对象来处理请求。要在共享后返回您的视图,您可以让您的方法返回View("Test")
,这将在您的共享目录中找到您的test.cshtml文件。
MVC在惯例上运作很大。如果您希望/Home/Test
响应重定向请求(特别是`RedirectToAction(“Test”,“Home”),您需要做一些事情:
HomeController
控制器(假设{ControllerName} / {ActionName}的默认MVC路由Test
返回视图的操作方法(偶数return View()
很好)