【问题标题】:Serve static files in blazor hosted project在 blazor 托管项目中提供静态文件
【发布时间】:2019-11-23 09:45:02
【问题描述】:

这是一个非常简单的任务,我想在位于wwwroot/css/images 的剃须刀页面中使用图像,并像这样在 html 中使用它。

<img src="~/css/images/logo.png"/>

在普通的 ASP.Net Core 应用程序中,我只需在 Configure 方法中添加 app.UseStaticFiles(),但由于这是一个 blazor 托管应用程序,它不会改变任何内容。

我也尝试在服务器项目中添加app.UseStaticFiles(),但也没有成功。

如果您想自己尝试一下,只需从模板创建一个 blazor 托管的项目,然后像我一样尝试提供/显示图像。

【问题讨论】:

    标签: c# asp.net-core static-files blazor


    【解决方案1】:

    Blazor 可以很好地提供静态文件。您遇到的问题是您用于引用文件的语法。您只需要删除~ 符号。

    <img src="/css/images/logo.png" />
    

    【讨论】:

    • 哦,是的,解决了这个问题,我有什么理由需要去掉波浪号吗?比如当前上下文中的相对路径是什么?
    • 老实说,我从未见过波浪号的意义所在。您只能使用相对于应用程序根目录的路径加载文件,在这种情况下,路径以 / 开头。或者从相对于当前页面的路径开始,在这种情况下,您将 / 从路径的开头删除。我不知道它在 Blazor 中无效的具体原因
    • 您的答案源代码中的印刷引号真的正确吗?
    • 我不认为他们是。该代码块是使用 * iOS 应用程序添加的,并且是它使用的引号。我现在使用 Web 客户端更新了答案,它们看起来是正确的。
    【解决方案2】:

    关于那个的精确度...任何东西的静态文件根 在 blazor 中,从 wwwroot 文件夹开始。 wwwroot 是 简单地认为是理所当然的,而在实际中被省略了 您需要用来请求静态文件的路径。使用:

    "/css/images/logo.png"

    也可以表达:

    “css/images/logo.png”..我很确定。

    如果您在 Razor 类库中...还有一个 wwwroot 用于 Razor 类库本身。使用时为 Blazor Wasm Client RCL 中任何静态文件的文件路径变为:

    "_content/[RCL 程序集名称]/css/images/logo.png"

    请注意,即使对于您在 Razor 类库本身中实现的类和内容, 即使你在那个库中定义的东西......静态文件 在 Razor 类库中您自己的 wwwroot 中使用 “_content/[RCL 程序集名称]”前缀。

    【讨论】: