2010-09-07 59 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