2013-05-29 2 views
0

У меня есть сайт MVC 4, а в папке «Представления» у меня есть папка для разных видов. Один из них - это имена «услуги». Под контроллерами у меня есть контроллер служб. Все шло хорошо. Затем я создал папку с именем «Сервисы» в корне сайта. Теперь, когда маршрутизация использует эту папку для поиска, а не поиска в папке «Представления». ???? Может ли кто-нибудь дать мне понять это явление? Я просто переименовал вторую папку, и жизнь снова хороша, но это было неожиданно, поскольку я думал, что маршрутизация по умолчанию попала в папку представлений..NET MVC 4 Не правильно найти папку просмотра

ответ

0

У вас не должно быть папки Services у корня. Это говорит о том, что маршрутизация игнорируется и не вызывает ASP.NET MVC.

У вас должна быть папка Views/Services.

+0

Я считаю, что вы неправильно - это зависит от того, установлено или нет [RouteCollection.RouteExistingFiles] (http://msdn.microsoft.com/en-us/library/system.web.routing.routecollection.routeexistingfiles.aspx) в Global.asax .cs и соответствует ли их маршрут пути файла вообще. – Haney

-1

Вероятно, ваш маршрут был чем-то вроде/Services/MethodName, и ваша папка просмотра также была /Services/MethodName.ascx или что-то еще на диске ... И если вы не укажете MVC для маршрутизации существующих файлов, это будет пусть они будут обслуживаться с диска по умолчанию. Чтобы изменить это, установите RouteCollection.RouteExistingFiles = истинное в Global.asax.cs на Application_Start

Это разобранном код для поиска Просмотров из поля зрения по умолчанию двигатели в MVC3:

Razor:

public RazorViewEngine(IViewPageActivator viewPageActivator) : base(viewPageActivator) 
{ 
    base.AreaViewLocationFormats = new string[] 
    { 
     "~/Areas/{2}/Views/{1}/{0}.cshtml", 
     "~/Areas/{2}/Views/{1}/{0}.vbhtml", 
     "~/Areas/{2}/Views/Shared/{0}.cshtml", 
     "~/Areas/{2}/Views/Shared/{0}.vbhtml" 
    }; 
    base.AreaMasterLocationFormats = new string[] 
    { 
     "~/Areas/{2}/Views/{1}/{0}.cshtml", 
     "~/Areas/{2}/Views/{1}/{0}.vbhtml", 
     "~/Areas/{2}/Views/Shared/{0}.cshtml", 
     "~/Areas/{2}/Views/Shared/{0}.vbhtml" 
    }; 
    base.AreaPartialViewLocationFormats = new string[] 
    { 
     "~/Areas/{2}/Views/{1}/{0}.cshtml", 
     "~/Areas/{2}/Views/{1}/{0}.vbhtml", 
     "~/Areas/{2}/Views/Shared/{0}.cshtml", 
     "~/Areas/{2}/Views/Shared/{0}.vbhtml" 
    }; 
    base.ViewLocationFormats = new string[] 
    { 
     "~/Views/{1}/{0}.cshtml", 
     "~/Views/{1}/{0}.vbhtml", 
     "~/Views/Shared/{0}.cshtml", 
     "~/Views/Shared/{0}.vbhtml" 
    }; 
    base.MasterLocationFormats = new string[] 
    { 
     "~/Views/{1}/{0}.cshtml", 
     "~/Views/{1}/{0}.vbhtml", 
     "~/Views/Shared/{0}.cshtml", 
     "~/Views/Shared/{0}.vbhtml" 
    }; 
    base.PartialViewLocationFormats = new string[] 
    { 
     "~/Views/{1}/{0}.cshtml", 
     "~/Views/{1}/{0}.vbhtml", 
     "~/Views/Shared/{0}.cshtml", 
     "~/Views/Shared/{0}.vbhtml" 
    }; 
    base.FileExtensions = new string[] 
    { 
     "cshtml", 
     "vbhtml" 
    }; 
} 

WebForms :

public WebFormViewEngine(IViewPageActivator viewPageActivator) : base(viewPageActivator) 
{ 
    base.MasterLocationFormats = new string[] 
    { 
     "~/Views/{1}/{0}.master", 
     "~/Views/Shared/{0}.master" 
    }; 
    base.AreaMasterLocationFormats = new string[] 
    { 
     "~/Areas/{2}/Views/{1}/{0}.master", 
     "~/Areas/{2}/Views/Shared/{0}.master" 
    }; 
    base.ViewLocationFormats = new string[] 
    { 
     "~/Views/{1}/{0}.aspx", 
     "~/Views/{1}/{0}.ascx", 
     "~/Views/Shared/{0}.aspx", 
     "~/Views/Shared/{0}.ascx" 
    }; 
    base.AreaViewLocationFormats = new string[] 
    { 
     "~/Areas/{2}/Views/{1}/{0}.aspx", 
     "~/Areas/{2}/Views/{1}/{0}.ascx", 
     "~/Areas/{2}/Views/Shared/{0}.aspx", 
     "~/Areas/{2}/Views/Shared/{0}.ascx" 
    }; 
    base.PartialViewLocationFormats = base.ViewLocationFormats; 
    base.AreaPartialViewLocationFormats = base.AreaViewLocationFormats; 
    base.FileExtensions = new string[] 
    { 
     "aspx", 
     "ascx", 
     "master" 
    }; 
} 
+0

Спасибо за ввод. У меня не было времени расследовать дальше. Когда я добавил папку, у меня был класс метода внутри нее, но это не был контроллер или представление. Это застало меня врасплох, что MVC по умолчанию отказался от папки «Службы» в корне и пропустил папку «Службы» в «Представлениях». – glerler

-1

Вы можете настроить маршрутизацию в папке App_Start в файле RouteConfig. Если добавить

  routes.MapRoute(
      name: "", 
      url: "Services/Index/{id}", 
      defaults: new 
          { 
           controller = "Services", 
           action = "Index", 
           id = UrlParameter.Optional 
          }); 

за routes.IgnoreRoute линии, вы будете иметь возможность папку Services в проекте MVC, и контроллер услуг с его видом.

Если теперь в одной из ваших взглядов что-то вроде этого:

@Html.ActionLink("To services", "Index", "Services") 

теперь она будет оказана, как ~/Услуги/Индекс не только ~/Услуги

+1

Это не отвечает на вопрос. – Haney

Смежные вопросы