自定义MVC路由:更改控制器的视图所在的位置

时间:2011-01-05 18:41:20

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

所以我有一个名为EmployeeController的控制器,所有的视图都在/ Employee中。

我想创建一个路由,以便EmployeeController将使用/ Employees和/ Employees / Add而不是/ Employee和/ Employee / Add。

我一直在寻找有关如何更改路线以进行不同操作的文章,但我找不到任何方法来执行此操作。

3 个答案:

答案 0 :(得分:2)

我认为你的观点与路线混淆了。 ASP.NET MVC很大程度上依赖于约定,在这个例子中,它采用路由的控制器组件来应用它来查找控制器。您可以定义新路线:

routes.MapRoute("Employees", "employees/{action}", new { 
    controller = "Employee",
    action = "Index" });

答案 1 :(得分:1)

实际上,有两个不同的问题:

  • 第一个是关于路线映射,在这里我同意Matthew Abbott和Bugai13建议的简单解决方案。
  • 第二个是关于“视图”文件夹约定和查看文件解决方案。如果你想要一些关于它的自定义逻辑,你可以继承ViewResult并改变它找到适当的View文件的方式。您还可以深入了解框架,并通过创建自己的IViewEngine或自定义已存在的一个来调整查找和实例化的方式。

看起来,你需要的只是第一件事 - 只需使用像employees/{action}这样的网址模式提供更具体的路由映射,你就完成了。

答案 2 :(得分:0)

为什么不将EmployeeController重命名为EmployeesController?然后你不必乱用路线。

当然,您还必须将Views \ Employee文件夹更改为Views \ Employees。

相关问题