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

奥利弗果园

我尝试在视图组件的视图内添加节脚本。

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

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

@RenderSection("scripts", required: false)

在部分视图和项目的其他地方使用脚本时,脚本可以很好地加载。但是,在视图组件中时,脚本不会加载。

我想我可以在调用该组件的每个视图的section标签中包含脚本。我觉得这与视图组件的自包含特性不符。

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

阿尔贝托·L·邦菲利奥

我在viewcomponents中的sections标签也遇到了问题。据我所知,viewcomponents中不支持它。参见https://github.com/aspnet/Home/issues/2037

Jake Shakesworth已实现了标签帮助器,如下所示:View组件中的Javascript

另一方面,您可以将其作为

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

我的要求是从ViewComponent显示Google地图。问题在于该脚本在jquery,jquery.ui之类的东西之前被调用。
通过使用defer,您告诉解析器在文档加载之前不要执行它,从而避免了为了正确执行而必须将其放入布局的问题。chrome,safari和ie(10 +),ff(3.6 +),o(15+)支持Defer

希望这可以帮助

这是我的代码的示例:

@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>

}

请注意,如果视图组件在页面上出现多次,您可能需要编写一些逻辑以防止脚本被多次包含。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章