2009-10-25 24 views
13

私はASP.NET MVC 2プレビュー2を使いこなしています。どのようにルーティングがエリアなどと連携しているのか把握しようとしています。プロジェクトの1つの領域の実装では、「admin」という名前の領域が必要です。ASP.NET MVCのルーティングとエリア

私はこのようなURLを持つことができるようにしようとしています:

(root)/admin/apples/search 
(root)/admin/apples/edit/3 
(root)/admin/apples/add 
(root)/admin/oranges/search 
(root)/admin/oranges/edit/5 
(root)/admin/oranges/add 
(root)/admin 

私が作成した領域を持っています。私はそれぞれのビューで作成されたコントローラを持っていますが、それは私が得ることができないルーティングです。どのように私がそのようなルーティングを達成するかについてのアドバイス?

これは一部の人にとっては非常に簡単かもしれないと確信していますが、基本的なものを超えた例を見つけるのはあまり幸運なことではありません。

ありがとうございます!質問(2009年10月25日) へ

追加私は基本的にどのようなルートを求めていますし、何のために私は、エリアのAreaRegistrationクラスに設定しますか?私はこれまで述べたことすべてを行ったが結果はなかった。あなたが管理エリアのフォルダにroutes.csファイルを追加する必要が

答えて

27

Register areas in single project

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace MvcAreasSingleProject.Areas.Admin 
{ 
    public class Routes : AreaRegistration 
    { 
     public override string AreaName 
     { 
      get { return "admin"; } 
     } 

     public override void RegisterArea(AreaRegistrationContext context) 
     { 
      context.MapRoute(
       "admin_default", 
       "admin/{controller}/{action}/{id}", 
       new { controller = "Admin", action = "Edit", id = "" } 
      ); 
     } 
    } 
} 
+2

これは私には正しいようです。 – Haacked

0

http://haacked.com/archive/2009/07/31/single-project-areas.aspx

 
routes.MapAreaRoute("Forums", 
     "admin_area", 
     "admin/{controller}/{action}/{id}", 
     new { controller = "apples", action = "search", id = "" }, 
     new string[] { "Project.Areas.Admin.Controllers" }); 
+0

これは、ASP.NET MVC 2プレビュー1のためのものです。プレビュー2では、単一のプロジェクト内の領域を即座に実装しています。 RouteCollectionにはプレビュー2にMapAreaRouteメソッドがありません。 –

+0

http://forums.asp.net/t/1477416.aspx –

関連する問題