c# - 如何在 Visual Studio 中查找 MVC Controller 方法的引用

标签 c# asp.net-mvc visual-studio visual-studio-2017

由于长期从事 WebForms 开发,我最近开始使用 MVC。让我印象深刻的一件事是,由于 Controller 方法不是直接从代码中调用的,因此 Visual Studio 不会获取对它们的任何引用。

Silly example code image

我理解没有引用计数的原因,但有时会出现问题。假设我重写了一个 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

Lifecycle of an ASP.NET MVC 5 Application

ASP.NET MVC Routing Overview

关于c# - 如何在 Visual Studio 中查找 MVC Controller 方法的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43281073/

相关文章:

css - 向 ASP.Net MVC 5 添加新主题不起作用

javascript - 使用 JavaScript 在没有按钮的表单中添加两个数字(在 cshtml MVC 中)

regex - 如何使用正则表达式验证带有可选百分比符号的小数?

c - 为什么使用 Dev-C++ 编译器而不是 Visual Studio 的编译器进行编译?

c# - WPF 中的 Visual Studio 样式撤消/重做按钮

c# - 使用c#登录需要Cookies的网站

c# - 索引在修剪文本处超出数组边界

javascript - 将 javascript 从 View 传输到单独的 JS 文件

c# - 在放置或移除 key 时获取 USB 唯一 ID

c# - 在一组值中按比例分配(按比例分配)一个值