当前位置: 首页 > 知识库问答 >
问题:

ASP。net MVC静态资源包和脚本。Render()

许庆
2023-03-14

我试图在我的ASP中实现一些静态资源改进。NETMVC4项目(VB.net),通过更改检索javascript和css文件等静态资源的方式。

我一直在关注这个链接(ASP.NET)

通常在渲染时。js或。您可以使用以下css包:

@Scripts.Render("~/bundles/jquery")

然后,在开发模式下,这将在~/bundles/jquery捆绑包中分别呈现每个脚本标记,并在生产模式下呈现一个指向缩小捆绑包的单个脚本标记。

根据上面的链接,当脚本捆绑到单个文件中时,您可以使用以下行:

<script src="@Url.StaticContent("~/bundles/jquery")" type="text/javascript"></script>

这对捆绑文件很好,因为src属性有效,StaticContent函数能够更改src URL。但在开发模式下,绑定的文件不存在,因为不进行绑定,所有脚本都由@scripts单独呈现给浏览器。渲染,因此此方法不起作用。

有人知道是否有可能为Scripts helper创建一个扩展方法来完成我需要的任务,或者我必须这样做吗?

@If Misc.IsLocalDev Then
    @Scripts.Render("~/bundles/jquery")
Else
    @<script src="@Url.StaticContent("~/bundles/jquery")" type="text/javascript"></script>
End If

共有1个答案

宁欣怿
2023-03-14

我设法找到了这个问题的解决方案,所以希望把它放在这里让所有人都看到,这将有助于其他人解决我遇到的类似问题。

与我在原始问题中发布的解决方法相同,我创建了两个新的帮助函数,以帮助在视图中生成必要的脚本和样式引用。。。

<ExtensionAttribute()> _
Public Function RenderScripts(helper As HtmlHelper, async As Boolean, ParamArray Paths() As String) As IHtmlString

    If Misc.IsLocalDev Then
        Return Optimization.Scripts.Render(Paths)
    Else
        Dim url As UrlHelper = New UrlHelper(HttpContext.Current.Request.RequestContext, RouteTable.Routes)
        Dim html As String = ""
        For Each Path In Paths
            If async = True Then
                html = html & "<script async src=""" & url.StaticContent(Path) & GetAppVersionSuffix() & """ type=""text/javascript""></script>"
            Else
                html = html & "<script src=""" & url.StaticContent(Path) & GetAppVersionSuffix() & """ type=""text/javascript""></script>"
            End If
        Next
        Return New HtmlString(html)
    End If

End Function

所以不用:

@脚本。呈现(“~/bundles/jquery”)

我把电话换成了:

@Html。RenderScripts(False,“~/bundles/jquery”)

关于上述方法的几点注记。。。

  • 我在函数调用中添加了一个异步参数,以允许我使用现代浏览器aynsc脚本
<ExtensionAttribute()> _
Public Function RenderStyles(helper As HtmlHelper, ParamArray Paths() As String) As IHtmlString

    If Misc.IsLocalDev Then
        Return Optimization.Styles.Render(Paths)
    Else
        Dim url As UrlHelper = New UrlHelper(HttpContext.Current.Request.RequestContext, RouteTable.Routes)
        Dim html As String = ""
        For Each Path In Paths
            html = html & "<link href=""" & url.StaticContent(Path) & GetAppVersionSuffix() & """ rel=""Stylesheet"" />"
        Next
        Return New HtmlString(html)
    End If

End Function

因此,再次强调,不要使用:

@样式。渲染(~/内容/风格)

我把电话换成了:

@Html。渲染样式(“~/Content/Style”)

我希望这对某人有用!

 类似资料:
  • Fes.js 基于 html-webpack-plugin在新窗口打开 实现的模板功能,默认 HTML模板 是: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewp

  • 每个网站都需要静态资源:图片、样式表、网站图标(favicon)等。在这种情况下,您可以在项目的根目录下创建一个名为 static 的目录。 放入 该目录中的每个文件都将被复制到 生成的 build 文件夹中,并保留目录的层级结构。例如,如果您将名为 sun.jpg 的文件添加到 static 文件夹中,则该文件将被复制到 build/sun.jpg 路径。 这意味着: 对于 baseUrl: '

  • 我们正在开发具有移动部分和网络用户界面的应用程序。Web UI使用角,我们在后端配置cors时遇到了问题。我们的代码如下(只是对我们的问题很重要的代码): 从stackoverflow上的文档和其他帖子来看,这应该是可行的,但不是。我们错过了什么? thnx 编辑: 这是邮递员的请求: 卷曲'https://guw.azurewebsites.net/api/token'-X OPTIONS-H'

  • JS 代码中引用媒体文件 可以直接在代码中使用 ES6 的 import 语法引入文件并在 JSX 中使用,目前仅支持图片类型的媒体文件。 JSON 中引用媒体文件 当你需要在 app.json 中配置使用的本地媒体文件(比如导航栏图片地址)时,可以将使用到的媒体文件放置到 src 下的某个目录下,并在 build.json 中将其配置到 constantDir 字段的数组中,示例如下: {

  • 相关: 公共基础路径 相关: assetsInclude 配置项 将资源引入为 URL 服务时引入一个静态资源会返回解析后的公共路径: import imgUrl from './img.png' document.getElementById('hero-img').src = imgUrl 例如,imgUrl 在开发时会是 /img.png,在生产构建后会是 /assets/img.2d8e

  • 所有的Markdown文件都通过Vite处理编译成Vue组件。你可以并且应当使用相对URL引用静态资源。 ![An image](./image.png) 你可以在你的Markdown文件、主题中的*.vue组件、样式和纯.css文件使用绝对公共路径(基于项目根目录)或相对路径(基于你的文件系统)。如果你使用过vue-cli或webpack的file-loader,后者更符合你的习惯。 常见的图