2010-09-07 58 views
0

我正在構建一個Web應用(前端和管理部分)。有4種主要記錄類型(書籍,汽車,房屋,交易)。用戶可以查詢並查看每個記錄類型的詳細信息,管理員可以查詢以及可以編輯和刪除。ASP.NET MVC2:幫助構建管理站點和路由

前端

  • 控制器:每個記錄類型具有以下操作

//
// GET: /{recordType}/Index
//
// GET: /{recordType}/Search

  • 路由:

routes.MapRoute("BookDetail", "Books/{Id}", new { controller = "Books", action = "Details", id = Optional }, new { Id = @"\d+" });
routes.MapRoute("CarDetail", "Cars/{Id}", new { controller = "Cars", action = "Details", id = Optional }, new { Id = @"\d+" });
[...]

  • 觀點:存在用於每個記錄類型的具有兩頁的Index.aspx(搜索表單和結果網格)和Details.aspx一個文件夾。

管理員

  • 控制器:有一個主要動作的呈現空視圖每個記錄類型具有以下操作

[HttpGet] public virtual ActionResult SearchRecord(RecordTypes? recordType){return View(GetViewNameFromRecordType(recordType));}
//
// GET: /Admin/{recordType}/Create
//
// POST: /Admin/{recordType}/Create
//
// GET: /Admin/{recordType}/Search
//
// POST: /Admin/{recordType}/Search
//
// GET: /Admin/{recordType}/Edit/1
//
// POST: /Admin/{recordType}/Save/1
//
// GET: /Admin/{recordType}/Delete/1
//
// POST: /Admin/{recordType}/Delete/1

  • 路由:我我掙扎着,因爲我想反映我的控制器邏輯,但我不知道不想創造大量的路線。

routes.MapRoute("BookDetail", "Admin/Books/Save/{Id}", new { controller = "Books", action = "SaveBook", recordtype = "Book" }); routes.MapRoute("BookDetail", "Admin/Books/Create/{Id}", new { controller = "Books", action = "CreateBook", recordtype = "Book" }); [...]

  • 觀點:有一個與所有頁面EditBook.aspx,SearchBook.aspx的管理文件夾,但其實我不喜歡這樣。

==

你覺得呢?我怎樣才能避免爲每種記錄類型添加大量路由?

謝謝!

洛倫佐。

+0

爲什麼不創建管理區? – ZippyV 2010-09-07 08:52:05

回答

0

您需要在路徑定義中包含「Action」。潛在地,下面的內容可以滿足您在單一路線定義中的所有需求。

routes.MapRoute( 「路線」, 「/管理/ {記錄類型}/{行動}/{ID}」, 新{控制器= 「書籍」,行動= 「搜索」,記錄類型=「書「,id = UrlParameter.Optional} );

那麼你就需要採取行動的方法,如:

公衆的ActionResult編輯(?RecordTypes RECORDTYPE,INT ID){...} public ActionResult保存(RecordTypes?recordType,int id){...} etc