Невозможно перенаправить, когда состояние модели ложно, отображается ошибка не найденной страницы - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь создать страницу входа со строгой типизацией, когда страница входа в систему загружается, и если я пытаюсь получить некоторую проверку при нажатии кнопки входа в систему, она показывает какое-то сообщение об ошибке.

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 голосов
/ 11 января 2019

По умолчанию, согласно ASP.NET MVC, если вы не указываете имя представления при возврате из метода действия, он считает путь представления следующим:

~ [ Каталог просмотров ] / [ Каталог с тем же именем, что и у вызывающего контроллера ] / [ Просмотр с такое же имя как Действие с расширением (.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);  
}
0 голосов
/ 11 января 2019

Я бы рекомендовал явно ввести имя вида или путь к виду, чтобы не было путаницы

return View(model,"Viewname or PathToView");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...