【问题标题】:Finding what method is called查找调用了什么方法
【发布时间】:2012-11-16 15:12:35
【问题描述】:

我有一个没有代码的 ASPX 页面(也就是说,没有同名的 .aspx.cs)。代码中有这一行:

<div style="overflow: hidden; text-align: center; z-index: 105;">
    <%= MainNavBarHTML %><%= SubNavBarHTML %>
</div>

我在程序的其余部分搜索了MainNavBarHTMLSubNavBarHTMl,但找不到对它们的任何引用。如何找到填充这些元素的内容?

【问题讨论】:

  • 页眉是什么样的?基本上,CodeFile 指令参考了什么?
  • 您是否尝试过右键单击它并选择“转到定义”?如果它是库的一部分,这应该带您进入方法 - 或对象浏览器
  • 查看代码隐藏文件以查找具有该名称的 protected/public 变量。
  • @TimSchmelter OP 声明没有可用的代码隐藏文件。
  • 有什么显示吗?也许变量不存在。

标签: c# asp.net webforms


【解决方案1】:

您可能想查看CodeFile vs CodeBehind 问题。

如果您的 ASPX 标记具有 CodeFile 指令,它将查找关联的 .cs 文件:

<%@ Page
    Language="C#"
    CodeFile="CustomerDetail.aspx.cs"
    Inherits="SomePage" %>

如果它列出了 CodeBehind 指令,它将在 Bin 文件夹中查找已定义类的程序集:

<%@ Page
    Language="C#"
    CodeBehind="CustomerDetail.aspx.cs"
    Inherits="SomePage" %>

这两个指令的命名非常不幸。如果应用程序正在使用CodeBehind(听起来确实如此),您可能无法访问源代码并且无法查看这些属性的定义,除非对已编译的程序集使用 .NET 反射工具。

【讨论】:

  • @boilers222 请完整发布页面指令部分。
  • @boilers222 page 指令只是我上面列出的部分。如果分享的内容太多,那么很遗憾,我无法提供更多帮助。
【解决方案2】:

在 Visual Studio 中,将光标放在文本上并按 F12 跳转到定义或右键单击文本并选择“转到定义”。

【讨论】:

  • 如果源不可用,您将无法导航到定义。
  • @Yuck。如果源不可用,它至少应该打开对象浏览器,以便您可以找到它所在的库。
【解决方案3】:

现在将其添加为答案(而不是在 cmets 中)。

您的项目将在某处包含代码,尽管它可能是另一个库 (DLL) 的一部分。

如果您右键单击属性(在本例中为 MainNavBarHTMLSubNavBarHTML,并从上下文菜单中选择“转到定义”,VS 将显示代码(如果它在 *. cs 页面)或加载对象浏览器并导航到该属性,以便您查看该属性的确切位置。

根据您的 VS 设置 F12 可能什么都不做 - 例如对我的什么也不做。在我看来,右键单击并选择“转到定义”是最稳定的导航方式。

【讨论】:

    【解决方案4】:

    Boiler,代码还在,你只需选择文件并按F7,你就会看到代码...

    【讨论】:

    • 他的建议有效地将用户带到该页面背后的代码。 OP没有。他需要右键单击代码并“转到定义”。或者我把 F7 快捷方式误认为是“查看代码”以外的东西
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 2013-04-17
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    相关资源
    最近更新 更多