我对如何正确设计我的 Controller 有疑问。
项目相当简单:博客、包含类别和图像的图片库、新闻部分。
但是我不知道如何为此组织我的 Controller ,因为我想做一些管理面板,管理员可以在其中编辑、添加和修改这些东西。到目前为止,我已经想出了 3 个场景……
管理面板将有指向
site/controller/edit
的链接,但这些操作结果的布局将不同于标准布局。管理 Controller 将执行所有这些操作,例如 BlogAdd、BlogEdit,因此 url 将类似于
/site/admin/blogedit
。在 admin 文件夹中创建博客 Controller 的副本,这样 url 就会像
/site/admin/blog/edit
- 我感觉到路由有问题,因为 2 个同名的 Controller 听起来不像一个好主意,但我喜欢 ho URL 在这种情况下看起来。
我想做的是有点类似于 wordpress 的 CMS,其中博客的创建、编辑和删除与默认博客本身完全分开。
最佳答案
我建议您停止考虑 URL 和 Controller 是 1->1 的关系。这将使事情变得容易得多,也不会那么困惑。您可以使用 MVC 的路由机制使 URL 随心所欲地工作,并且没有理由因为您想要的 URL 而限制您的 Controller 设计/组织,因为您始终可以根据您想要的 URL 调整路由。
在构建网站时,只关注 Controller (和通用界面)并忽略 URL,直到你到达那个点,然后当你想出一个好的 URL 方案时,进入路由系统并添加路由根据需要连接到现有的 Controller 操作。
编写博客引擎代码后,您将对用户工作流有更好的了解,并且可能会找到不同的方式来组织您的 URL,然后您可以在不接触 Controller 本身的情况下重新组织您的 URL。
关于您的第一个要求:
根据您的最终目标,有两种方法可以做到这一点。如果您的目标是显示相同的核心内容,但有不同的用户选项(不同的总体布局、页面上的其他按钮等),那么最好的办法就是传入一个 IsAdministrator
View 模型中的属性,并根据是真还是假对页面进行轻微更改。原因是因为您仍然(很可能)希望页面的核心是相同的,这可以防止您复制与核心数据(为管理员和非管理员显示的数据)相关的代码。
编辑:总而言之,根据使开发更容易的因素来组织您的 Controller ,而不是根据用户与系统的交互方式。您可以随时更改后者,更改前者更难,并且会使维护变得烦人。
关于asp.net-mvc - ASP.NET MVC Controller 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6943634/