关于ASP.NET MVC:CSHTML中JavaScript的断点?

breakpoint on javascript in CSHTML?

我有一个带有javascript标记的.CSHTML文件。
在这个脚本标签中,我有几行JavaScript。
javascript的第一行引用@ViewBag中的属性。
所有其他javascript行都是纯脚本,没有任何与MVC相关的引用。

观察:
我可以在这些JavaScript行的每行上放置断点(Visual Studio 2015)。
但是,除具有@ViewBag引用的行外,所有断点在断点符号(红色圆圈)的中心都有白点(该特定行的中心没有白点)。

似乎在运行时仅击中没有白点的断点。

题:
有人可以解释这里发生了什么吗?
白点是什么意思?
为什么纯红色断点行是唯一到达断点的行?


Visual Studio调试器实际上期望您调试.cshtml文件中的实际服务器端代码,而不是其中的客户端Javascript。

IIRC,Visual Studio将允许您按预期在Internet Explorer(可能还有Edge)中调试Javascript代码,但是对于其他浏览器,您可能希望在浏览器中使用第三方工具或开发人员工具(F12)。

一种简单的方法是利用Javascript的debugger关键字,您可以将其放置在代码中并在开发人员工具打开的情况下运行(只需按F12键,然后刷新页面)。它将遇到一个断点,浏览器将允许您按照您的期望逐步执行代码:

1
2
3
4
5
6
function doWork(){
    // Ensure that this line is hit with the Developer Tools open in your
    // browser
    debugger;
    // Do work here
}

运行Web应用程序后,解决方案资源管理器将显示一组新文件,它们是动态脚本对象。通常,您可以在其中找到JS代码并在运行后创建断点:

enter image description here

如果单击"空白",它将显示cshtml页面的动态加载版本,并且我可以添加断点。