由于长期从事 WebForms 开发,我最近开始使用 MVC。让我印象深刻的一件事是,由于 Controller 方法不是直接从代码中调用的,因此 Visual Studio 不会获取对它们的任何引用。
我理解没有引用计数的原因,但有时会出现问题。假设我重写了一个 Controller 方法来满足一些新的要求,也许对该方法的某个调用需要额外的数据或修改的结果。但也许那个方法,或者端点,如果你愿意的话,是从几个地方调用的,我所做的改变打破了对那些其他调用的结果处理。我希望能够轻松找到我的解决方案中将调用端点的所有代码。
目前,我倾向于复制方法名称并在整个解决方案中执行常规文本搜索,只要方法名称不太通用,这种方法就可以很好地工作。如果方法名称是“Index”,那可能是漫长的一天。
是否有任何关于如何简化这一点的建议,例如编码约定、插件或其他方式? I.E.我如何定位调用端点的位置?
我目前使用的是 Visual Studio 2017 Enterprise,但也可以使用其他版本的解决方案是首选 - 以使答案对尽可能多的人有用。 在此先感谢/Culme
更新:根据收到的评论和回复,我学到了很多东西。除了下面提到的内容之外,我还决定尝试让我的 Controller 方法名称保持唯一且可识别,以简化查找它们的使用位置。例如,我将尝试使用“Fidgets_IndexController”或类似的东西,而不仅仅是“Index”。这样,简单的文本搜索将大大有助于查找调用代码。
最佳答案
Controller 方法不直接从代码的任何部分引用(因此引用为 0),但它们是基于 RouteTable 动态调用的,该 RouteTable 在启动时映射 Controller 方法 RouteConfig.RegisterRoutes(RouteTable.Routes);
在 global.asax 中“隐式地”将它们映射为/controller_name/action_name 或者可以通过编辑来更改它们
RouteConfig.RegisterRoutes(RouteCollection routes)
或使用属性:
[Route("myAction")]
public ActionResult MyAction() {
...
}
这会将它绑定(bind)到/myAction(没有 Controller 名称)
进一步阅读:
MSDN - Understanding MVC Application Execution Process
关于c# - 如何在 Visual Studio 中查找 MVC Controller 方法的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43281073/