MVCで過去9ヶ月間に自分自身を吸収してしまったので、私が苦労していると思われるエリアはエリアとルーティングです。MVC3のエリア、ルーティングとURL
誰が助けることがあれば質問のカップル:
1)MVC3アプリケーションとそれが関連付けられています可能な領域は、異なるURLがありますか?
例:
- メインアプリ(ルート)= www.mymvcapp.com
- モバイルアプリ(面積)= m.mymvcapp.com
- 管理アプリケーション(面積)= admin.mymvcapp。 comの
- たCustomerService(面積)= custsvc.mymvcapp.com
など、など、など...
事前にご理解いただけるヒントや解決策MVCの多くの書籍は、一般的にエリアとルーティングを覆すようになっているようです。
この場合も、これは「エリア」とルーティングに非常に特有です。
ありがとうございます。
EDIT 2012年1月26日:
まず最初に動作するように実際の面積を取得することでした。私は昨日遅くにびっくりするまでこれで運がなかった。
"ホーム"コントローラと単一の "インデックス"アクションメソッドとビューを持つテストMVCプロジェクト(MvsAreas)を作成しました。 :)
「Admin」という名前の領域が追加され、「HomeController」というコントローラが追加され、「Index」アクションメソッドとビューが1つ追加されました。
ホームコントローラが2つあるため、実行時エラーが発生します。解決策:名前空間を使用し、オーバーロードされた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、リンクをありがとう、私は実際にそれを使用して問題を解決することができました。 –