我正在尝试创建一个强类型的登录页面,当登录页面加载时,如果我尝试在单击登录按钮时获得一些验证,它将显示一些错误消息。
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
答案 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);
}