У меня есть сайт MVC 4, а в папке «Представления» у меня есть папка для разных видов. Один из них - это имена «услуги». Под контроллерами у меня есть контроллер служб. Все шло хорошо. Затем я создал папку с именем «Сервисы» в корне сайта. Теперь, когда маршрутизация использует эту папку для поиска, а не поиска в папке «Представления». ???? Может ли кто-нибудь дать мне понять это явление? Я просто переименовал вторую папку, и жизнь снова хороша, но это было неожиданно, поскольку я думал, что маршрутизация по умолчанию попала в папку представлений..NET MVC 4 Не правильно найти папку просмотра
ответ
У вас не должно быть папки Services
у корня. Это говорит о том, что маршрутизация игнорируется и не вызывает ASP.NET MVC.
У вас должна быть папка Views/Services
.
Вероятно, ваш маршрут был чем-то вроде/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"
};
}
Спасибо за ввод. У меня не было времени расследовать дальше. Когда я добавил папку, у меня был класс метода внутри нее, но это не был контроллер или представление. Это застало меня врасплох, что MVC по умолчанию отказался от папки «Службы» в корне и пропустил папку «Службы» в «Представлениях». – glerler
Вы можете настроить маршрутизацию в папке 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")
теперь она будет оказана, как ~/Услуги/Индекс не только ~/Услуги
Это не отвечает на вопрос. – Haney
- 1. MVC 4 Не удается найти папку «Скрипты»
- 2. .NET MVC 4 ApplicationDbContext.SaveChanges() не сохраняет все данные правильно
- 3. MVC 4 как правильно передать данные из контроллера для просмотра
- 4. DevExpress MVC .net 4
- 5. Передача правильно отформатированного JSON из .NET MVC Controller для просмотра
- 6. .Net MVC 4 CAS Аутентификация
- 7. Не удается найти папку mvc в htdocs
- 8. MVC 4 ApiController не сериализует System.Json.JsonObject правильно
- 9. MVC 4 частичный просмотр не отображается правильно
- 10. . NET MVC 4 WebAPI POST не работает
- 11. .net MVC 4 Авторизация (членство)
- 12. asp .net mvc 4 dropdownlist
- 13. ASP: NET MVC 4 + MEF
- 14. Добавить изображения dynamicaly asp net mvc 4
- 15. MVC 4 VB Дополнительные данные просмотра
- 16. ASP MVC 4 - не могу найти Посмотреть
- 17. MVC 4 Просмотра перезарядка с изменением данных
- 18. MVC 4 Бритва. Частичная форма просмотра Проверка
- 19. Как создать MVC Contrib для .NET 4?
- 20. Asp .net mvc 4 специфическая команда «select ....»
- 21. MVC 4 и JavaScript
- 22. MVC 4 (RC) Web Api OData не сортируется правильно
- 23. Кордова: не удалось найти папку Android SDK, но это правильно
- 24. MVC 4 Mobile Detection Не для просмотра как для макета
- 25. Преобразование MVC 2 ASPX в MVC 4 Механизм просмотра бритвы
- 26. .NET MVC 4 пользовательских элементов управления
- 27. Приложение MVC 4 .net framework 3.5 SP1
- 28. asp.net mvc 2 и .net 4 parallelism
- 29. Запуск Mono 3.2.0 с .NET MVC 4
- 30. .NET MVC карта 4 маршрута и Html.Action
Я считаю, что вы неправильно - это зависит от того, установлено или нет [RouteCollection.RouteExistingFiles] (http://msdn.microsoft.com/en-us/library/system.web.routing.routecollection.routeexistingfiles.aspx) в Global.asax .cs и соответствует ли их маршрут пути файла вообще. – Haney