我正在尝试构建我自己的 ScriptManagerController
,它将从另一个项目加载 JS 文件。
这些文件保存为资源文件。
这是我在Net451
var url= Page.ClientScript.GetWebResourceUrl(this.GetType(), "namespace.CustomComboBox.js") + "?JSReloader=" + DateTime.Now.ToFileTime()
var sc= "<script src="+url+"></script>"
问题是 NetAppCore 2.0 没有 ClientScriptManager
或 Page
,因此我无法使用 GetWebResourceUrl
我仍然可以加载 JS 文件内容然后加载它抛出 HtmlString
这在我的情况下真的很糟糕,我的 JS 文件内容真的很大所以我想避免它。
有解决办法吗?
更新
这就是我所做的,我在另一个项目中创建了一个返回文件流的 Controller ,并使用 MapRoute 来映射 Controller 的命名空间。
我对其他解决方案持开放态度。
app.MapRoute(
name: "xxx",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index" },
namespaces: new string[] { "namespace" }
最佳答案
按照这篇文章的第 4、5 和 6 步操作 including-static-resources-in-razor-class-libraries
创建配置文件。
internal class EditorRCLConfigureOptions : IPostConfigureOptions<StaticFileOptions> { private readonly IHostingEnvironment _environment; public EditorRCLConfigureOptions(IHostingEnvironment environment) { _environment = environment; } public void PostConfigure(string name, StaticFileOptions options) { // Basic initialization in case the options weren't initialized by any other component options.ContentTypeProvider = options.ContentTypeProvider ?? new FileExtensionContentTypeProvider(); if (options.FileProvider == null && _environment.WebRootFileProvider == null) { throw new InvalidOperationException("Missing FileProvider."); } options.FileProvider = options.FileProvider ?? _environment.WebRootFileProvider; // Add our provider var filesProvider = new ManifestEmbeddedFileProvider(GetType().Assembly, "resources"); options.FileProvider = new CompositeFileProvider(options.FileProvider, filesProvider); } }
(可选)创建一个扩展类(您也可以跳过并直接在
services.ConfigureOptions
类中使用Startup
行。public static class EditorRCLServiceCollectionExtensions { public static void AddEditor(this IServiceCollection services) { services.ConfigureOptions(typeof(EditorRCLConfigureOptions)); } }
将新服务添加到启动类的
ConfigureServices
方法:services.AddEditor();
现在您可以使用文件路径,就像 Content
文件,但对于嵌入式资源!
<script src='@(pathToEmbeddedResource)' />
关于c# - Asp.net Core 获取 WebResource Url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55962473/