我对C#ASP.NET-MVC中的动作命名一致性感到困惑,假设我有一个带有以下层的简单应用程序:
Controller
- > Service layer
- > Data Access layer
数据访问层包含一个带有数据库表的1:1类。假设我有5个表User
,UserAddresses
,Order
,OrderDetails
,Product
我想将这些分组为两组:
CustomerController
包含与User
和UserAddresses
相关的任何内容
TransactionController
包含与Order
,OrderDetails
和Product
我的问题通常是控制器中的动作命名方法类似于
Index
Create
Edit
Delete
etc
所以在我的情况下,如何在Create
和Edit
需要单独的Delete
,User
和UserAddreses
页面的同时保留这些命名模式}。
任何帮助将不胜感激
为糟糕的英语道歉
答案 0 :(得分:2)
创建两个区域
第一个区域 - 客户
- ControllerUser(索引,创建,编辑,删除)
- ControllerUserAddreses(索引,创建,编辑,删除)
第二区 - 交易
-ControllerOrder(索引,创建,编辑,删除)
-ControllerOrderDetails(索引,创建,编辑,删除)
-ControllerProduct(索引,创建,编辑,删除)
如果您想要索引,创建,编辑,删除等,此设计可能对您有所帮助
答案 1 :(得分:1)
您通过拥有CustomerController
和TransactionController
两个不同的控制器来正确地遵循模式。
每个控制器都拥有自己的CRUD操作和视图,因此您不必担心以不同的方式命名它们。
所以你通常会得到这样的结论:
CustomerController:
Create(UserModel theUser)
Edit(int id, UserModel theUser)
Delete(int id)
TransactionController:
Create(OrderModel theOrder)
Edit(int id, OrderModel theOrder)
Delete(int id)
OrderDetails可以是Order的属性,因此如果每个实体以这种方式相关,则您不一定需要有一个操作方法。这同样适用于您的用户:
class UserModel
{
public List<UserAddress> UserAddresses {get; set; }
}