我想获得一些关于如何为新站点设置控制器的建议。
该站点将在各个位置设有图书馆,并且每个图书馆都可以拥有一套书籍。
URL 结构如下所示:
/图书馆名称/书籍/书籍名称
这些书也可能有类别或体裁:
/图书馆名称/类别/书籍/书籍名称
我的问题是,我是否只创建一个库控制器,其中包含添加/删除库以及添加和删除书籍的所有逻辑?
或者我要创建一个图书馆控制器和一个书籍控制器?如果是这样,我如何确保书籍“绑定”到特定图书馆?
很抱歉这个简单的问题,但主要教程似乎都没有这样的嵌套路线。
谢谢,罗比
我想获得一些关于如何为新站点设置控制器的建议。
该站点将在各个位置设有图书馆,并且每个图书馆都可以拥有一套书籍。
URL 结构如下所示:
/图书馆名称/书籍/书籍名称
这些书也可能有类别或体裁:
/图书馆名称/类别/书籍/书籍名称
我的问题是,我是否只创建一个库控制器,其中包含添加/删除库以及添加和删除书籍的所有逻辑?
或者我要创建一个图书馆控制器和一个书籍控制器?如果是这样,我如何确保书籍“绑定”到特定图书馆?
很抱歉这个简单的问题,但主要教程似乎都没有这样的嵌套路线。
谢谢,罗比
如果您使用多个物理上独立的库,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() };
}
你想显示书籍,所以在我看来你需要一个 BookController 而不是 LibraryController。BookController 根据作为参数传递给 BookController 的图书馆和/或类别来获取特定书籍(或书籍列表)。
如果要正确设置(划分 UI、业务逻辑、数据访问),则应将检索数据的逻辑放在单独的类库中