模型状态为false时无法重定向,显示未找到某些页面错误

时间:2019-01-11 07:55:09

标签: asp.net-mvc strongly-typed-view

我正在尝试创建一个强类型的登录页面,当登录页面加载时,如果我尝试在单击登录按钮时获得一些验证,它将显示一些错误消息。

public class LoginDetails
    {
        [Required]
        [EmailAddress]
        [Display(Name ="Email Id")]
        public string Email { get; set; }
        [Required]
        [Display(Name ="PassWord")]
        public string Password { get; set; }
        [Display(Name ="Remember Me?")]
        public bool RememberMe { get; set; }
    }

public ActionResult Login(LoginDetails model) 
{
 if (ModelState.IsValid)
 {
    return RedirectToAction("Index", "Home");
 }

    return View(model); //Error Occurs Here
}

显示如下错误

  

“ /”应用程序中的服务器错误。 “登录”视图或其主视图为   找不到或视图引擎不支持搜索到的位置。的   搜索了以下位置:

~/Views/Login/Login.aspx
~/Views/Login/Login.ascx
~/Views/Shared/Login.aspx
~/Views/Shared/Login.ascx
~/Views/Login/Login.cshtml
~/Views/Login/Login.vbhtml
~/Views/Shared/Login.cshtml
~/Views/Shared/Login.vbhtml

2 个答案:

答案 0 :(得分:0)

我建议您明确键入视图名称或视图路径,以免混淆

return View(model,"Viewname or PathToView");

答案 1 :(得分:0)

根据ASP.NET MVC的默认约定,如果在从操作方法返回时未指定视图名称,则它将认为视图路径为:

  

〜[ Views Directory ] / [与调用控制器名称相同的目录] / [< strong>与以下名称相同的视图   具有扩展名(.aspx,.ascx,.cshtml,.vbhtml)的操作]

如果未找到,它还会在共享目录中搜索视图:

  

〜[查看目录] / [共享目录] / [具有相同名称的视图如   具有扩展名(.aspx,.ascx,.cshtml,.vbhtml)的操作]

对于您而言,在以上任何目录中均未找到Login View,因此出现错误。尝试提供视图的完整路径以将问题解决为:

public ActionResult Login(LoginDetails model) 
{
 if (ModelState.IsValid)
 {
    return RedirectToAction("Index", "Home");
 }

    //Pass the full view path
    return View("~/Views/[Directory in which the view is created]/Login.cshtml", model);  
}