我想就如何为新网站设置控制器提出一些建议。
该网站将在各个地点设立图书馆,每个图书馆都可以有一套图书。
网址结构如下所示:
/库的名称/书籍/预订-名称
书籍也可能有类别或类型:
/库的名称/分类/书籍/书本名称
我的问题是,我是否只创建了一个库控制器,其中包含添加/删除库以及添加和删除书籍的所有逻辑?
或者我是否创建了库控制器和书籍控制器?如果是这样,我如何确保书籍与特定图书馆“绑定”?
很抱歉这个简单的问题,但没有一个主要的教程似乎有这样的嵌套路线。
谢谢, 罗比
答案 0 :(得分:2)
答案 1 :(得分:2)
如果您使用多个物理上独立的库,LibraryName(可能)有意义(但会弹出一些明显的位置问题)?
请注意,您可能会开始使用此方法点击路由地狱,但这并非不可能,因此我首先要研究并定义您的结构。
使用以下URI结构可能会更好:
/libraries/{LibraryName}/books/
获取libraryName
中的图书清单/libraries/{LibraryName}/books/{BookISBN}
根据它的ISBN编号获取一本书
/libraries/{LibraryName}/books?category=somecategory
获取某个类别的图书清单
使用示例路由:
routes.MapRoute(
name: "LibraryBooks",
url: "libraries/{id}/books",
defaults: new { controller = "Libraries", action = "GetBooks" }
);
它在LibrariesController中的方法:
public IEnumerable<IBook> GetBooks(string id)
{
return new IBook[] { new Book(), new Book() };
}
答案 2 :(得分:0)
您想要显示书籍,因此我认为您需要BookController而不是LibraryController。 BookController基于作为参数传递给BookController的库和/或类别来获取特定书籍(或书籍列表)。
如果要正确设置(划分UI,业务逻辑,数据访问),则应将检索数据的逻辑放在单独的类库中