【问题标题】:ASP.NET MVC2: Help building admin site and routingASP.NET MVC2:帮助构建管理站点和路由
【发布时间】:2010-09-07 08:34:14
【问题描述】:

我正在构建一个网络应用程序(前端和管理部分)。有 4 种主要记录类型(书籍、汽车、房屋、交易)。用户可以查询和查看每个记录类型的详细信息,管理员也可以查询,还可以编辑和删除。

前端

  • 控制器:每种记录类型都有以下操作

//
// 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+" } );
[...]

  • views:每个记录类型都有一个文件夹,有两个页面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" } ); [...]

  • views:有一个 Admin 文件夹,其中包含所有页面 EditBook.aspx、SearchBook.aspx 但实际上我不喜欢这个。

==

你怎么看?如何避免为每种记录类型添加大量路由?

谢谢!

洛伦佐。

【问题讨论】:

  • 为什么不创建一个管理区域?

标签: asp.net-mvc-2


【解决方案1】:

您需要在路由定义中包含“操作”。以下内容可能会在单个路由定义中满足您的所有需求。

routes.MapRoute( “路线”, "/Admin/{RecordType}/{Action}/{id}", 新的{控制器=“书”,动作=“搜索”,记录类型=“书”,id=UrlParameter.Optional} );

那么你需要一些动作方法,例如:

public ActionResult Edit (RecordTypes?recordType, int id) {...} 公共 ActionResult Save (RecordTypes?recordType, int id) {...} 等等

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    相关资源
    最近更新 更多