【发布时间】:2016-01-28 22:49:55
【问题描述】:
我想知道这是否可能。假设我有一个单片控制器 ReportController.cs。
我想制作一个完全独立的控制器文件,但仍将 /Report/ 保留在我们需要了解和期望的 url 中。
我尝试的是在我的全局 asax 中这样做:
routes.MapRoute(
"Testing", // Route name
"{test}/{action}/{id}" // URL with parameters
);
我添加了一个名为 ReportTest.cs 的新控制器
原来的路线是这样的:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "LandingPage", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
每次我尝试调用 ReportTest.cs 中的简单操作时都会收到此错误:“值不能为空或为空。参数名称:控制器名称”
我是否误解了它的工作原理。当您拥有“{controller}/..”时,这不是说“查找任何名为 + 控制器的控制器并使用它”。所以如果我去 .../Report/DoStuff 它会在 ReportController 上寻找方法 DoStuff 对吗?
那么我的其他路线不会只是附加一个搜索序列吗?所以如果我把 .../Report/DoStuff 它会在 ReportController 和 ReportTest 上寻找方法 DoStuff 对吗?
【问题讨论】:
-
部分课程会起作用吗?
-
不,部分类有帮助,但智能感知和重构方法在所有这些代码的重压下仍然会挣扎。离开是为了获得非常非常糟糕的开发体验。
-
@CodeCaster 如果他使用部分控制器类,他可以分解他的代码,这样它就不会全部放在一个巨大的文件中。那不行吗?
-
有许多不同的潜在方法,具体取决于此处需要进行的重构。部分类是其中之一(尽管“在所有代码的重压下挣扎”真的让我想知道这个代码库是什么样的......)。也许属性路由是一种选择?然后全局路由和控制器名称就不再是什么问题了,您可以随意命名您的控制器类并在各个属性中定义路由。
-
@Josh 这更有意义。您的第一条评论缺乏背景。
标签: c# asp.net asp.net-mvc asp.net-mvc-4