我在一个测试MVC3项目中尝试使用 knockout (Knockout.js)。我有以下结构:

Project Root
  Scripts
    jquery-1.4.4.js
    knockout-1.2.0.debug.js
    etc...
  Views
    Home
      Index.cshtml
    Shared
      _Layout.cshtml
  HTMLPage1.htm

在_Layout.cshtml文件中,我具有以下脚本块:

<script src="/Scripts/jquery-1.4.4.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.tmpl.js" type="text/javascript"></script>
<script src="/Scripts/knockout-1.2.0.debug.js" type="text/javascript"></script>

在我的Index.cshtml文件中,我试图在脚本块中使用ko对象。它运行良好,但是在VS设计器中,我对ko对象本身没有任何智能理解。

如果我在根项目级别打开一个纯HTML文件并在其中放置脚本块,则会在ko对象上获得智能感知。

我有什么问题?为什么intellisense无法在我的.cshtml文件中看到ko对象?

我注意到在VS的调试输出中,得到以下信息:

最佳答案

啊,想通了。我需要在实际的.cshtml文件中引用我的.js文件的脚本块。

如:

@if (false)
{
    <script src="/Scripts/knockout-1.2.0.debug.js" type="text/javascript"></script>
    <script src="/Scripts/jquery-1.4.4.min.js" type="text/javascript"></script>
    <script src="/Scripts/jquery-ui.js" type="text/javascript"></script>
    <script src="/Scripts/jquery.tmpl.js" type="text/javascript"></script>
    <script src="/Scripts/knockout-1.2.0.debug.js" type="text/javascript"></script>
}

@if(false)表示它们不会在运行时包含(因此请使用我的主.cshtml文件中包含的脚本)。

10-04 16:37