放置在@section Scripts {}内的Dotnet Core 1.1 MVC Javascript不会被渲染

时间:2017-07-07 19:41:04

标签: javascript asp.net-mvc razor .net-core sections

我正在编写一个使用dotnet core 1.1 MVC的Web应用程序。我无法弄清楚为什么放在@section里面的javascript没有呈现?

我验证了我的_Layout.cshtml包含

@RenderSection("Scripts", required: false)
</body> 

以下是我的观点。为简洁起见,我整合了代码。

(不起作用)

Create.cshtml:

<h2>Create</h2>
@{Html.RenderPartial("_CreateOrEdit", Model);}

@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");} 

_CreateOrEdit.cshtml

<div class="row">
    <a asp-action="Index">Back to List</a>
</div>


@section Scripts
{
<script type="text/javascript">
        $(document).ready(function () {
            $('.datepicker').datepicker({
                format: "dd.mm.yyyy",
                todayBtn: "linked",
                language: "de"
            });
        });
</script>
} 

我面临的挑战是。不呈现_CreateOrEdit.cshtml中的上述Scripts部分。

但是,如果我将此脚本放在Create.cshtml的Scripts部分中,如下所示,它将被渲染..我做错了什么。

(作品)

Create.cshtml

<h2>Create</h2>
@{Html.RenderPartial("_CreateOrEdit", Model);}


@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} 

<script type="text/javascript">
        $(document).ready(function () {
            $('.datepicker').datepicker({
                format: "dd.mm.yyyy",
                todayBtn: "linked",
                language: "de"
            });
        });
</script>
} 

_CreateOrEdit.cshtml

<div class="row">
    <a asp-action="Index">Back to List</a>
</div>

1 个答案:

答案 0 :(得分:0)

在局部视图中,您可以将def gen_perm(cur_item_set, cur_str=''): if not cur_item_set: yield cur_str else: for item in cur_item_set: for item2 in gen_perm(cur_item_set - {item}, cur_str + item): yield item2 g = gen_perm(set('abcd')) print (list(g)) 用于.js文件,将@Scripts.Render("~/Scripts/myScript.js")用于css文件。

但是,值得一提的是,如果您的脚本依赖于其他包含的脚本(如jquery),那么您可能会遇到问题,因为您不一定能保证脚本的加载顺序。

建议在父页面上包含脚本(如果站点范围需要,则为_layout),而不是在局部视图中