Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET MVC中对导航属性执行CRUD操作时的路由标准_C#_Asp.net_Asp.net Mvc_Controller_Routing - Fatal编程技术网

C# 在ASP.NET MVC中对导航属性执行CRUD操作时的路由标准

C# 在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列出联系人变得容易

如果这更像是一个基于意见的问题,我很抱歉,但如果有,我想知道以下情况的标准/惯例

我有一个CustomerController,它有基本的MVC脚手架crud视图。路线格式是典型的:Customers/Edit/1

假设在Customers edit视图中,我还希望在该网格中列出客户与crud的联系人

因此,我的CustomerServiceWModel包含所有典型的客户属性和一个导航属性:IEnumerable contacts。这使得在路径:Customers/Edit/1列出联系人变得容易

我的主要问题是如何通过客户实体为联系人执行CRUD

  • 我的所有CustomerContact操作方法都应该在CustomerController或单独的ContactsController中完成吗?由于一切都是通过客户实体进行的,这让我相信CustomerController将是常见的选择

  • “客户编辑”页面中“联系人列表”表上的“编辑”和“删除”链接中的“我的路由”是否应该类似于“客户/1/Contacts/edit/1”、“客户/1/delete/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 :::::::::