GC.*_*GC. 4 theory model-view-controller asp.net-mvc-routing hierarchical-data
所以想象一下,我正在使用MVC Web应用程序构建一个多用户地牢系统.为了描述玩家可以探索的区域,系统可以包含许多地图,其中包括房间和门 - 其中门连接两个房间.考虑系统的创作部分.创建地图很简单 - 我需要以下网址:
/Author/Maps (an index of my maps) /Author/Maps/Create (a new Map) /Author/Maps/Detail/3 (show Map details) /Author/Maps/Edit/3 (edit map details)
使用路由方案:/ Author/{controller}/{action}/{ID}
这是我需要帮助的房间的URL.在创建一个新的房间时,我需要知道我正在创建它的地图.
/Author/Rooms/CreateIn/[mapID] ?
然后编辑房间的详细信息:
/Author/Rooms/Edit/[roomID] /Author/Rooms/Detail/[roomID]
这种路由方案是否有效?列出Map的所有房间的视图是否应该是Rooms控制器上的"Index"操作,传入MapID或Map控制器上的"Rooms"操作?
谢谢.
我不知道这是不是最佳做法,但我会这样做:
添加新路线: /Author/Maps/{mapID}/Rooms/{action}/{roomID}
由于这是我只希望用于RoomsController的路线,因此我不会{controller}在该路线中有参数.只需将控制器设置为路径默认对象中的"房间"即可.
然后,您的RoomsController中的所有操作都将知道他们正在使用哪个地图.
RoomsController的默认Index操作可以是指定地图的所有Rooms的列表.
Create操作看起来像Create(int mapID),Details操作看起来像Details(int mapID, int roomID)
编辑:关于mapID和roomID不匹配的无效网址,您可以忽略mapID,但我认为更好的过程是验证指定的mapID是否正确并显示错误消息(如果不是).
编辑2 :(关于mapID和roomID之间关系的其他想法)你可以在给定的地图中使roomID唯一.因此,地图5,房间3将是与地图8,房间3不同的房间.
| 归档时间: |
|
| 查看次数: |
800 次 |
| 最近记录: |