C# 在ASP.NET MVC中对导航属性执行CRUD操作时的路由标准
如果这更像是一个基于意见的问题,我很抱歉,但如果有,我想知道以下情况的标准/惯例 我有一个CustomerController,它有基本的MVC脚手架crud视图。路线格式是典型的:Customers/Edit/1 假设在Customers edit视图中,我还希望在该网格中列出客户与crud的联系人 因此,我的CustomerServiceWModel包含所有典型的客户属性和一个导航属性:IEnumerable contacts。这使得在路径:Customers/Edit/1列出联系人变得容易 我的主要问题是如何通过客户实体为联系人执行CRUDC# 在ASP.NET MVC中对导航属性执行CRUD操作时的路由标准,c#,asp.net,asp.net-mvc,controller,routing,C#,Asp.net,Asp.net Mvc,Controller,Routing,如果这更像是一个基于意见的问题,我很抱歉,但如果有,我想知道以下情况的标准/惯例 我有一个CustomerController,它有基本的MVC脚手架crud视图。路线格式是典型的:Customers/Edit/1 假设在Customers edit视图中,我还希望在该网格中列出客户与crud的联系人 因此,我的CustomerServiceWModel包含所有典型的客户属性和一个导航属性:IEnumerable contacts。这使得在路径:Customers/Edit/1列出联系人变得容易
ASP.NET
MVC
根据传入的URL调用不同的控制器类(以及其中的不同操作方法)。ASP.NET
MVC
使用的默认URL路由逻辑使用如下格式来确定要调用的代码:
/[Controller]/[ActionName]/[Parameters]
在App_Start/RouteConfig.cs文件中设置路由的格式。应用程序启动/路由图
因此,您可以根据需要制作控制器的数量
但是您应该知道,您应该真正知道如何在appstat
文件中链接它们
包含路由的
并将其与适当的视图链接
For the Second Question :::::::::
有许多方法可以将参数从URL传递到控制器:
我将为每种方法提供一个示例,这是一个wellcome示例
在任何预定义的控制器内
1-你可以像我上面说的默认方式一样传递它
此方法称为path param
2-你可以这样通过他们:
此方法称为queryparam
3-您可以通过以下两种方式进行混合:
我建议你从这里开始学习:
即使mvc版本与您的版本不一样,它也可能是基于观点的,但下面是。。。我认为,如果联系人在域中是自己的聚合根,那么他们应该有自己的控制器。另一方面,如果它们是描述客户的属性,并且从不存在于父客户对象的上下文之外,那么对我来说,它们是客户控制器的一部分是有意义的。这只是意味着客户对象比标准脚手架CRUD支持更复杂,这并不少见。非常感谢您的回复。因此,如果contacts是整个系统中的一个公共实体,并且被用作CustomerContacts、EmployeeContacts、VendorContacts,那么您将为其提供自己的控制器。否则,在我的情况下,如果它是严格为客户使用的,那么它可能都应该在客户控制器中处理。对于个人联系人编辑,我的路由看起来合适吗?客户/5/Contacts/Edit/1?问题不在于它有多普遍,而在于它有多独特。(考虑到“电话号码”也是一个公共属性,但不需要它自己的控制器。)我只会在编辑任何其他实体的上下文之外的联系人(并且仅是联系人)有意义的情况下给它自己的控制器。听起来联系人本身并不是域中的一个实体,而只是一个复杂的值类型,用作各种实体(客户、员工等)的属性。明白了,完全有道理。非常感谢。Elie我很感激这个答案,但它并没有完全回答我的问题。我对如何做你提到的每件事都很有经验。我更关心的是处理导航属性的编辑。好的,我给了你3种传递参数的模式,我认为这一定很有用
For the Second Question :::::::::