在過去9個月左右的已吸收自己在MVC中,一個區域,我似乎與掙扎的領域和路由。MVC3區,路由和URL
幾個問題,如果有人可以幫助:
1)能夠在一個MVC3應用程序和它相關的領域有不同的網址嗎?
實施例:
- 主應用程序(根)= www.mymvcapp.com
- 移動應用(區域)= m.mymvcapp.com
- 管理員應用(區域)= admin.mymvcapp。 COM
- 的CustomerService(區域)= custsvc.mymvcapp.com
等,等,等...
任何提示或解決方案提前非常感謝。看起來,MVC中的很多書籍都只是上傳區域和路由。
再次,這是非常具體的,以「區域」和路由。
在此先感謝。
編輯2012年1月26日:
第一件事就是獲得實際的區域合作。直到昨天晚些時候,我才得以幸運。
我創建了一個測試MVC項目(MvsAreas)與「家」控制器和一個「指數」的操作方法和觀點,讓好爲止。 :)
添加所謂的「系統管理員」的區域中,增加了一個被稱爲「HomeController的」控制器和加入一個單一的「指數」行動方法和視圖。
因爲我有兩個家的控制器,你會得到一個運行時錯誤。解決方案:使用名稱空間,然後使用重載的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。
如果有人有任何建議,請隨時添加。
可能重複的[主機名如何包含在MVC2路由映射?](http://stackoverflow.com/questions/4216098/how-can-host-name-be-included-in-mvc2-route-映射) – Lucero
不一樣的問題,但接近。留下問題,因爲有人可能會有直接的答案。 –
@Lucero,感謝您的鏈接,我實際上可以使用它並解決問題。 –