剃刀 – 我应该在哪里包含视图组件的脚本?

我试过在视图组件的视图中添加一个section脚本.

@section scripts {
    <script src="~/somepath" asp-append-version="true"></script>
}

我在共享布局中也有渲染部分

@RenderSection("scripts",required: false)

在部分视图和项目中的其他位置使用时,脚本加载正常.但是,在View Component中,脚本不会加载.

我想我可以将脚本包含在调用组件的每个视图的section标签中.我觉得这不适合视图组件的自包含特性.

还有其他方法可以做到这一点吗?

解决方法

我在viewcomponents中也遇到了section标签的问题.事实证明,据我所知,在viewcomponents中没有它的支持.见 https://github.com/aspnet/Home/issues/2037

Jake Shakesworth实现了一个标签助手,如下所示:
Javascript in a View Component

另一方面,您可以将它作为一个包含在viewcomponent中

<script defer src"...">
  </script>

我的要求是从viewcomponent显示谷歌地图.问题是脚本是在jquery,jquery.ui之前调用的.
通过使用延迟,您告诉解析器在文档加载之前不执行它,从而避免了必须将其放入布局中以便正确执行的问题.
延迟由chrome,safari支持,即(10),ff(3.6),o(15)

希望这可以帮助

这是我的代码示例:

@using MobileVet.WebApp.Services;
@inject ISettingsService SettingsService
@{
     var Options = SettingsService.Value();

    <!--Service Area-->
    <div class="container-fluid">
         <div class="row p-3">
            <!--First column-->
            <div class="col-md-3">
                <h5 class="title">Site Navigation</h5>
                <ul>
                    <li><a href="#!">Home</a></li>
                    <li><a href="#!">Services</a></li>
                    <li><a href="#!">Link 3</a></li>
                    <li><a href="#!">Link 4</a></li>
                </ul> 

            </div>
            <!--/.First column-->
            <hr class="w-100 clearfix d-md-none">

            <!--Second column-->
            <div class="col-md-9">

                <div id="map-canvas" style="min-height: 300px; min-width: 200px;"> 
                </div>
            </div>
            <!--/.Second column-->

        </div>
    </div>
    <!--Service Area-->


<script src="http://maps.google.com/maps/api/js?key=XXXXXXXXXXXXXXXXXXXXXXX&sensor=false"></script>
<script type="text/javascript" src="~/js/components/servicearea.js" defer ></script>

}

请注意,如果视图组件在页面上出现多次,您可能需要编写一些逻辑来防止脚本被多次包含,这不是我的情况

相关文章

引言 本文从Linux小白的视角, 在CentOS 7.x服务器上搭建一个...
引言: 多线程编程/异步编程非常复杂,有很多概念和工具需要...
一. 宏观概念 ASP.NET Core Middleware是在应用程序处理管道...
背景 在.Net和C#中运行异步代码相当简单,因为我们有时候需要...
HTTP基本认证 在HTTP中,HTTP基本认证(Basic Authenticatio...
1.Linq 执行多列排序 OrderBy的意义是按照指定顺序排序,连续...