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

时间:2016-01-10 22:27:15

标签: c# asp.net asp.net-mvc controller routing

如果这是一个基于意见的问题,我会提前道歉,但如果有的话,我想知道以下情况的标准/惯例。

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

让我们说在客户编辑视图中我还希望在该网格上列出客户与crud的联系人。

所以我的CustomerViewModel包含所有典型的Customer属性和导航属性:IEnumerable contacts。这样可以在路线上列出联系人:Customers / Edit / 1 easy。

我的主要问题是如何通过Customer实体为联系人进行CRUD。

  1. 我的所有CustomerContact操作方法都应该在CustomersController内部或单独的ContactsController中完成吗?由于一切都通过Customers实体,这使我相信CustomersController将是常见的选择。

  2. 我在客户编辑页面的联系人列表中编辑和删除链接的路由应该是Customers / 1 / Contacts / Edit / 1,Customers / 1 / Delete / 1等等。或者是否有更好的模式可供遵循。

1 个答案:

答案 0 :(得分:2)

For the First question :::::::::

ASP.NET MVC根据传入的URL调用不同的控制器类(以及其中的不同操作方法)。 ASP.NET MVC使用的默认URL路由逻辑使用这样的格式来确定要调用的代码:

/[Controller]/[ActionName]/[Parameters]

在App_Start / RouteConfig.cs文件中设置路由格式。 App_Start / RouteConfig.cs 因此,您可以根据需要制作多个控制器 但是你应该知道你应该知道如何在appstat文件中链接它们 包含路线 并将其与相应的观点联系起来。

For the Second Question :::::::::

有很多方法可以将参数从URL传递到控制器::: 我将举例说明每一种方法wellcome example 在任何预定义控制器内 enter image description here

1 - 你可以像我上面所说的默认方式传递它,

此方法称为path param

2-你可以像这样传递它们:::

此方法称为query param enter image description here

3-你可以在两种方式之间混合: enter image description here

我建议你从这里开始学习::: http://www.asp.net/mvc/tutorials/mvc-5/introduction/getting-started  即使mvc版本与你的版本不同