Погрузившись в MVC за последние 9 месяцев или около того, мне кажется, что мне приходится бороться только с областями и маршрутизацией.
Несколько вопросов, если кто-то может помочь:
1.) Может ли приложение MVC3 и связанные с ним области иметь разные URL-адреса?
Пример:
- Главное приложение (root) = www.mymvcapp.com
- Мобильное приложение (область) = m.mymvcapp.com
- Приложение администратора (область) = admin.mymvcapp.com
- CustomerService (область) = custsvc.mymvcapp.com
и т. Д., И т. Д. ...
Любые советы или решения, заранее оцененные.Просто кажется, что во многих книгах о MVC просто говорится о областях и маршрутизации в целом.
Опять же, это довольно специфично для "областей" и маршрутизации.
Спасибозаранее.
РЕДАКТИРОВАТЬ 26 ЯНВАРЯ 2012 ГОДА:
Первым делом нужно было заставить работать фактическую площадь.Мне никогда не везло с этим, пока я не нырнул в конце вчерашнего дня.
Я создал тестовый проект MVC (MvsAreas) с контроллером "Home" и одним методом и видом действия "Index", так что хорошодо сих пор.:)
Добавлена область с именем "Admin", добавлен контроллер с именем "HomeController" и добавлен один метод и представление действия "Index".
Поскольку у меня есть два домашних контроллера, вы будетеполучить ошибку во время выполнения.Решение: используйте пространства имен, а затем используйте перегруженный метод MapRoute для передачи пространства имен.
Контроллер корневого приложения:
Namespace MvcAreas.Web.Mvc.Controllers
Public Class HomeController
Inherits Controller
Function Index() As ActionResult
Return View()
End Function
End Class
End Namespace
Контроллер области администратора:
Namespace MvcAreas.Areas.Admin.Controllers
Public Class HomeController
Inherits Controller
Function Index() As ActionResult
Return View()
End Function
End Class
End Namespace
Global.asax
Namespace MvcAreas.Web.Mvc
Public Class MvcApplication
Inherits HttpApplication
Shared Sub RegisterGlobalFilters(ByVal filters As GlobalFilterCollection)
filters.Add(New HandleErrorAttribute())
End Sub
Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
routes.MapRoute(
"Root_Default",
"{controller}/{action}/{id}",
New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional},
New String() {"MvcAreas.Web.Mvc.Controllers"}
)
End Sub
Sub Application_Start()
AreaRegistration.RegisterAllAreas()
RegisterGlobalFilters(GlobalFilters.Filters)
RegisterRoutes(RouteTable.Routes)
End Sub
End Class
End Namespace
AdminAreaRegistration.vb
Namespace MvcAreas.Areas.Admin
Public Class AdminAreaRegistration
Inherits AreaRegistration
Public Overrides ReadOnly Property AreaName() As String
Get
Return "Admin"
End Get
End Property
Public Overrides Sub RegisterArea(ByVal context As System.Web.Mvc.AreaRegistrationContext)
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional},
New String() {"MvcAreas.Areas.Admin.Controllers"}
)
End Sub
End Class
End Namespace
Это приведет к работе области и корня.
Следующий шаг;попытайтесь использовать некоторые из приведенных ниже ссылок для настройки URL-адресов.
Если у кого-либо есть какие-либо предложения, пожалуйста, не стесняйтесь добавлять.