Asp.net mvc 带有Knockoutjs的数据绑定脚本不从视图中生成数据

Asp.net mvc 带有Knockoutjs的数据绑定脚本不从视图中生成数据,asp.net-mvc,razor,knockout.js,visual-studio-2015,Asp.net Mvc,Razor,Knockout.js,Visual Studio 2015,我正在阅读一本关于MVC、Bootstrap和Knockoutjs的书,但很难得到我想要的结果。这是我第一次使用knockoutjs,总体而言,我对编码还是比较陌生的。以下是我试图通过本教程完成的内容 我已经下载了Knockoutjs库,并在@RenderSection(“Scripts”,false)上方的_layout.cshtml文件中引用了它,如下所示 <environment names="Development"> <script s

我正在阅读一本关于MVC、Bootstrap和Knockoutjs的书,但很难得到我想要的结果。这是我第一次使用knockoutjs,总体而言,我对编码还是比较陌生的。以下是我试图通过本教程完成的内容

我已经下载了Knockoutjs库,并在
@RenderSection(“Scripts”,false)
上方的_layout.cshtml文件中引用了它,如下所示

    <environment names="Development">    
        <script src="~/lib/jquery/dist/jquery.js"></script>
        <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
        <script src="~/js/site.js" asp-append-version="true"></script>
    </environment>
    <environment names="Staging,Production">
        <script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.1.4.min.js"
                asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
                asp-fallback-test="window.jQuery">
        </script>
        <script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.5/bootstrap.min.js"
                asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js"
                asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal">
        </script>
        <script src="~/js/site.min.js" asp-append-version="true"></script>
        <script src="~/lib/knockoutjs/dist/knockout.js"></script>
    </environment>
    @RenderSection("Scripts", false)
</body>

@RenderSection(“脚本”,false)

然后,我用以下代码创建了一个名为Basic.cshtml的视图

    @{  
    ViewBag.Title = "Basic";
}

<h2>Hello <span data-bind="text: name"></span></h2>

@section Scripts {
<script>
    function ViewModel() {
        this.name = "Not Eric McQuiggan"
    };

    var viewModel = new ViewModel();
    ko.applyBindings(viewModel);
</script>
}
@{
ViewBag.Title=“基本”;
}
你好
@节脚本{
函数ViewModel(){
this.name=“不是Eric McQuiggan”
};
var viewModel=新的viewModel();
应用绑定(视图模型);
}
值得注意的是,当我键入@section脚本语法时,Intellisense并没有使用它

理论上,当我使用_layout.cshtml导航到XXXX/home/basic,然后从knockoutjs传入数据绑定的值以显示“Hello Not Eric McQuiggan”时,应该会生成一个视图。但是,在调试时,页面只显示标题文本(“Hello”)而不显示其他内容

显然,这意味着脚本没有运行。我试图找到更多的信息,我可能错过了什么,但我在一条死胡同。我相信它最终会成为一件小事,但任何帮助都将不胜感激


提前谢谢

ASP.NET Core引入了对使用多个应用程序的支持

如果未指定,则默认环境为
developmenet

在布局中,您使用的是
环境
标记辅助元素,如果您使用的是匹配的环境,则该元素仅将其内容写入输出

因此,在
development
模式下,您的HTML将如下所示:

<environment names="Development">    
    <script src="~/lib/jquery/dist/jquery.js"></script>
    <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
    <script src="~/js/site.js" asp-append-version="true"></script>
</environment>
<!-- this is not included in the outputted HTML when in development mode -->
<!-- <environment names="Staging,Production">
    ...
</environment> -->
@RenderSection("Scripts", false)

注意:您应该确保
knockout.js
位于正确的位置,并且ASP.NET Core已配置为从该位置为文件提供服务器。

我不喜欢ASP.NET,但请尝试将applyBindings放在document.ready函数中。我怀疑脚本是先运行的,但所需的DOM尚未运行。这是KnockoutJS中常见的错误。e、 g.$(function(){ko.applyBindings(viewModel);})您在控制台上有任何错误吗?我想你应该在那里吃一些。谢谢你!我知道它必须是一些小的位置的参考,但不知道去哪里。
<environment names="Development">    
    <script src="~/lib/jquery/dist/jquery.js"></script>
    <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
    <script src="~/js/site.js" asp-append-version="true"></script>
    <script src="~/lib/knockoutjs/dist/knockout.js"></script>
</environment>