Подтвердить что ты не робот

Представление или его мастер не были найдены или механизм просмотра не поддерживает найденные местоположения

Ошибка: просмотр "LoginRegister" или его мастер не найден или механизм просмотра не поддерживает найденные местоположения. Были обысканы следующие местоположения:

~/Views/MyAccount/LoginRegister.aspx

~/Views/MyAccount/LoginRegister.ascx

~/Views/Shared/LoginRegister.aspx

~/Views/Shared/LoginRegister.ascx

~/Views/MyAccount/LoginRegister.cshtml

~/Views/MyAccount/LoginRegister.vbhtml

~/Views/Shared/LoginRegister.cshtml

~/Views/Shared/LoginRegister.vbhtml

На самом деле моя страница просмотра страниц ~/Views/home/LoginRegister.cshtml, так что я делаю

а мой RouteConfig -

 public class RouteConfig
    {

        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "MyAccount", action = "LoginRegister", id = UrlParameter.Optional }
            );
        }
    }
4b9b3361

Ответ 1

Будьте осторожны , если ваш тип модели - String, потому что второй параметр View (string, string) - masterName, не модель. Возможно, вам придется вызвать перегрузку с объектом (моделью) в качестве второго параметра:

Неправильно:

protected ActionResult ShowMessageResult(string msg)
{
    return View("Message",msg);
}

Правильно:

protected ActionResult ShowMessageResult(string msg)
{
    return View("Message",(object)msg);
}

ИЛИ (предоставляется bradlis7):

protected ActionResult ShowMessageResult(string msg)
{
    return View("Message",model:msg);
}

Ответ 2

Проблема:

Ваш View не может быть найден в местах по умолчанию.

Объяснение:

Представления должны находиться в одной папке с именем Controller или в папке Shared.

Решение:

Переместите ваш View в папку MyAccount или создайте HomeController.

Альтернативы:

Если вы не хотите переместить View или создать новый Controller, вы можете проверить ссылку .

Ответ 3

В Microsoft ASP.net MVC механизм маршрутизации, используемый для синтаксического анализа входящих и исходящих URL-адресов, разработан с идеей конвенции по конфигурации. Это означает, что если вы будете следовать правилам (правилам), которые использует механизм маршрутизации, вам не нужно изменять конфигурацию.

Механизм маршрутизации для ASP.net MVC не обслуживает веб-страницы (.cshtml). Он предоставляет способ для URL-адреса обрабатывать класс в вашем коде, который может отображать текст /html в выходной поток, или анализировать и обслуживать файлы .cshtml согласованным образом с помощью Конвенции.

Конвенция, которая используется для маршрутизации, должна соответствовать контроллеру для класса с именем, аналогичным ControllerNameController i.e. controller="MyAccount" означает поиск класса с именем MyAccountController. Далее идет действие, которое отображается на функцию в классе контроллера, которая обычно возвращает ActionResult. т.е. action="LoginRegister" будет искать функцию public ActionResult LoginRegister(){} в классе контроллера. Эта функция может возвращать View(), которая была бы в соответствии с Конвенцией с именем LoginRegister.cshtml и была бы сохранена в папке /Views/MyAccount/.

Подводя итог, вы получите следующий код:

/Controllers/MyAccountController.cs:

public class MyAccountController : Controller 
{
    public ActionResult LoginRegister()
    {
        return View();
    }
}

/Views/MyAccount/LoginRegister.cshtml: ваш файл просмотра.

Ответ 4

В действии LoginRegister при возврате представления, сделайте ниже, я знаю, что это можно сделать в mvc 5, im не уверен, что и в mvc 4.

 public ActionResult Index()
 {
     return View("~/Views/home/LoginRegister.cshtml");
 }

Ответ 5

Это может быть проблема с правами доступа.

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

Ответ 6

Проверьте, имеет ли файл вида (.ASPX), который вы создали, с тем же именем, что и в контроллере. Например, например:

 public ActionResult GetView()
 {
    return View("MyView");
 }

В этом случае файл aspx должен иметь имя MyView.aspx вместо GetView.aspx

Ответ 7

Я получил эту ошибку, потому что переименовал свой вид (и действие POST).

Наконец, я обнаружил, что забыл переименовать BOTH GET и POST в новое имя.

Решение: Переименуйте как действия GET, так и POST, чтобы соответствовать имени вида.

Ответ 8

Проверьте действие сборки вашего представления (файл .cshtml). Он должен быть установлен в качестве содержимого. В некоторых случаях я видел, что действие сборки было установлено на "Нет" (по ошибке), и это конкретное представление не было развернуто на целевой машине, даже если вы видите, что представление присутствует в файле проекта визуальной студии в действительной папке

Ответ 9

Если проблема возникает периодически при производстве, это может быть связано с прерыванием действия. Например, во время операции POST, связанной с большой загрузкой файла, пользователь закрывает окно браузера перед завершением загрузки. В этом случае метод действия может вызывать исключение нулевой ссылки, полученное из нулевой модели или объекта просмотра. Решение заключалось бы в том, чтобы обернуть тело метода в try/catch и вернуть null. Вот так:

[HttpPost]
public ActionResult Post(...)
{
    try
    {
        ...
    }
    catch (NullReferenceException ex)  // could happen if POST is interrupted
    {
        // perhaps log a warning here
        return null;
    }

    return View(model);
}

Ответ 10

Если вы проверили все вещи из приведенных выше ответов (которые являются общими ошибками), и вы уверены, что ваше представление находится в месте в исключениях, вам может потребоваться перезапустить Visual Studio.

: (

Ответ 11

У меня была такая же проблема. Я скопировал представление "Кино" и соответственно переименовал его в "Клиент". Я также сделал то же самое с моделями и контроллерами.

Решение было таким... Я переименовал представление клиента в Customer1, просто создал новое представление и назвал его Customer.... Затем я просто скопировал код Customer1 в Customer.

Это сработало.

Я хотел бы знать настоящую причину проблемы.

ОБНОВЛЕНИЕ Только для ухмылок.... Я вернулся и повторил весь сценарий переименования снова... и не получил никаких ошибок.

Ответ 12

В моем случае мне нужно было использовать RedirectToAction для решения проблемы.

[HttpGet]
[ControleDeAcessoAuthorize("Report/ExportToPDF")]
public ActionResult ExportToPDF(int id, string month, string output)
{
    try
    {
        // Validate
        if (output != "PDF")
        {
            throw new Exception("Invalid output.");
        }
        else
        {
            ...// code to generate report in PDF format
        }
    }
    catch (Exception ex)
    {
        return RedirectToAction("Error");
    }
}

[ControleDeAcessoAuthorize("Report/Error")]
public ActionResult Error()
{
    return View();
}

Ответ 13

Я столкнулся с этим некоторое время назад, и это сводило меня с ума, потому что это оказалось простым. Поэтому в моем View я использовал элемент управления grid, который получал данные для сетки через http-запрос. Когда средний уровень завершил мой запрос и вернул набор данных, я получил ту же ошибку. Оказывается, мой оператор return был 'return View (набор данных);' вместо 'вернуть Json (набор данных);

Ответ 14

В моей работе есть несколько политик, которые не делают работу NuGet вообще, и в результате мое решение потеряло свои ссылки на DLL microsoft.aspnet.mvc. Однако, как только я добавил DLL в ссылки вручную, мне удалось отобразить страницу.