我正在尝试构建自己的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,该Controller在另一个项目中返回文件流 并使用MapRoute映射控制器的名称空间。
如果您有其他解决方案,仍然可以给您要点。
app.MapRoute(
name: "xxx",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index" },
namespaces: new string[] { "namespace" }
答案 0 :(得分:6)
遵循本文including-static-resources-in-razor-class-libraries的步骤4、5和6
创建配置文件。
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)' />