【问题标题】:Unable to inject javascript with Swashbuckle/Swagger无法使用 Swashbuckle/Swagger 注入 javascript
【发布时间】:2017-07-06 23:19:45
【问题描述】:

我正在使用 Swashbuckle NuGet 包为我的 API 创建 Swagger 文档。 https://www.nuget.org/packages/Swashbuckle

我正在尝试对 UI 进行一些小改动 - 本质上只是为了在标题中添加一些公司品牌。

我已将两个文件作为嵌入式资源添加到我的项目中,位于名为 resources 的目录中。

这些通过以下方式注入 UI:

.EnableSwaggerUi(c =>
{
    c.InjectStylesheet(thisAssembly, typeof(SwaggerConfig).Namespace + ".Resources.Swagger.css");

    c.InjectJavaScript(thisAssembly, typeof(SwaggerConfig).Namespace + ".Resources.Swagger.js");
}

这会导致将以下链接添加到呈现的页面。

<link href="ext/ang_nav_api-Resources-Swagger-css" rel="stylesheet" type="text/css" media="screen">

这一切都正确,样式表按预期工作。

但是 .js 脚本没有出现在客户端上。

c.InjectJavaScript 更改为c.InjectStylesheet 确实将文件作为&lt;link&gt; 注入......所以我很高兴文件本身被正确嵌入等。

这里有什么问题?

【问题讨论】:

    标签: asp.net-web-api2 swagger swashbuckle


    【解决方案1】:

    .js 脚本不会出现在客户端上。 (不是你所期望的方式) 仔细看index.html的代码: https://github.com/domaindrivendev/Swashbuckle/blob/8223bedae706fec612c98ebbcee6b2d7033ae349/Swashbuckle.Core/SwaggerUi/CustomAssets/index.html#L98

    您的 customScript 将在 onComplete 事件中动态加载

    $.getScript(script);
    

    【讨论】:

    • 如果你只需要对 UI 做一些小的改动,自定义 CSS 就足够了,看看这个例子:swashbuckletest.azurewebsites.net/swagger/ui/index
    • 谢谢,很抱歉这件事退居二线,所以只能回到它上面。 @Helder 自定义 CSS 将完成我想要的 99%……它可能会完成 100%。我需要做的就是添加一个品牌标志并切换一些颜色。它添加了我想要脚本的徽标,因为我实际上需要一个新的 DOM 节点。
    • 终于让它工作了。看起来,当我将代码包装在 $(document).ready(function(){}) 中时,它没有执行。
    猜你喜欢
    • 2021-04-13
    • 1970-01-01
    • 2018-07-29
    • 2019-10-23
    • 2019-11-19
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多