ABP官方文档翻译 6.5 内嵌资源文件

内嵌资源文件

  • 介绍
  • 创建内嵌文件
    • xproj/project.json形式
    • csproj形式
  • 添加内嵌资源管理器
  • 使用内嵌视图
  • 使用内嵌资源
    • ASP.NET Core 配置
    • 忽略文件
  • 重写内嵌文件

介绍

  ABP提供了一种简单的方式在web应用中使用内嵌Razor视图(.cshtml文件)和其他资源(css,js,img...files)。你可以使用这个特征创建包含UI功能的plugins/modules

创建内嵌文件

  首先,我们要创建一个文件并标记它为嵌入资源。任何程序集都可以包含嵌入资源。progress 的改变基于工程的格式

xproj/project.json形式

  假定我们有一个工程,名为EmbeddedPlugin,如下所示:

  

  为了在Views文件下的所有文件都为嵌入资源,我们可以在project.json文件中添加如下配置:

 "buildOptions": {
    "embed": {
      "include": [
        "Views/**/*.*"
      ]
    }
  }

csproj形式

  假定我们有一个工程,名为EmbeddedPlugin,如下所示:

  

  选择Index.cshtml文件,到属性窗口(快捷键F4)改变它的Build ActionEmbedded Resource

  

  在web应用中你想使用的所有文件都应该改变他们的build action为embedded resource

添加内嵌资源管理器

  一旦我们将文件嵌入到程序集中,我们就可以使用startup configuration来将文件添加嵌入资源管理器。你可以在模块的PreInitialize方法中添加下面的一行代码:

Configuration.EmbeddedResources.Sources.Add(
    new EmbeddedResourceSet(
        "/Views/",
        Assembly.GetExecutingAssembly(),
        "EmbeddedPlugIn.Views"
    )
);

  我们来解释一下参数:

  • 第一个参数定义了文件的根目录(如 http://yourdomain.com/Views/here)。它匹配根命名空间。
  • 第二个参数定义了包含的文件的程序集。这段代码应该在包含嵌入文件的程序集中。否则,你应该相应的更改这个参数。
  • 最后一个参数定义了程序集中文件的根命名空间。这个是默认的命名空间(通常为程序集的名称),通过点加上‘在程序集中的文件夹‘。

使用内嵌视图

  对于.cshtml文件,直接从控制器Action返回。在EmbeddedPlugin程序集中的BlogController如下所示:

using Abp.AspNetCore.Mvc.Controllers;
using Microsoft.AspNetCore.Mvc;

namespace EmbeddedPlugIn.Controllers
{
    public class BlogController : AbpController
    {
        public ActionResult Index()
        {
            return View();
        }
    }
}

  如你所见,和正常的视图一样按期望的使用。

使用内嵌资源

  为了使用嵌入资源(js,css,img...),我们只需按我们通常在视图中做的那样使用它们即可:

@section Styles {
    <link href="~/Views/Blog/Index.css" rel="stylesheet" />
}

@section Scripts
{
    <script src="~/Views/Blog/Index.js"></script>
}

<h2 id="BlogTitle">Blog plugin!</h2>

  假定主应用有样式和脚本部分。我们可以像通常一样使用其他文件(如图片)。

ASP.NET Core 配置

  ASP.NET MVC 5.x通过Owin(如果你的启动文件包含app.UseAbp())自动集成嵌入资源管理器。对于AS.NET Core工程,我们应该手动在Startup类中添加app.UseEmbeddedFiles(),需要在app.UseStaticFiles()之后,如下所示:

app.UseStaticFiles();
app.UseEmbeddedFiles(); //Allows to expose embedded files to the web!

忽略文件

  通常,在嵌入资源管理器中的所有文件可以直接在客户端使用,犹如静态文件一样。你可以忽略一些文件扩展,出于安全或其他目的。.cshtml和.config文件默认忽略(对于来自客户端的直接请求)。你可以在模块的PreInitialize方法中添加更多扩展,如下:

Configuration.Modules.AbpWebCommon().EmbeddedResources.IgnoredFileExtensions.Add("exe");

重写内嵌文件

  嵌入资源文件的一个重要特征就是可以被更高的模块重写。意味着你可以在应用中同样的文件下创建同样名称的文件来覆盖嵌入的文件(在web应用中的文件不需要作为嵌入资源,因为静态文件的优先级高于嵌入文件)。因此,你可以重写应用中的css、js或模块/插件的视图文件。如果模块A依赖于模块B并且模块A在同样的路径定义了一个嵌入资源,他会覆盖模块B的嵌入资源。

注意:对于ASP.NET Core工程,应该把重写文件放到wwwroot文件夹作为根路径。

返回主目录

时间: 2024-08-24 09:12:52

ABP官方文档翻译 6.5 内嵌资源文件的相关文章

应用程序内嵌资源文件[训练数据]

Windows exe/dll内嵌数据 ? 调用资源的方式 exe/dll有对应的入口函数main/_tmain/winmain/_dllmain等:透过这些入口函数可以获取exe文件路径或者文件的handle[exe通过入口函数拿到路径后调用LoadLibrary得到句柄,dll直接从入口函数得到句柄]:静态库没有入口函数拿不到句柄不能进行资源嵌入; ? 调用代码示例: [纯数据文件,如果是media文件{音视频文件}或者数据库db文件等需要用专门库解析的文件则可以考虑将读取的数据指针的内容写

ABP官方文档翻译 5.4 SwaggerUI集成

SwaggerUI集成 介绍 ASP.NET Core 安装Nuget包 配置 测试 ASP.NET 5.x 安装Nuget包 配置 测试 介绍 在它的网站上:“...使用Swagger可用的API,你将获得可交互的文档.客户端SDK生成和可发现的能力”. ASP.NET Core 安装Nuget包 在你的网站上安装Swashbuckle 6.x nuget包. 配置 在Startup.cs的ConfigureServices方法中添加Swagger的配置代码: public IServiceP

ABP官方文档翻译 6.3 本地化

本地化 介绍 应用程序语言 本地化源 XML文件 注册XML本地化源 JSON文件 注册JSON本地化源 资源文件 自定义源 当前语言是如何决定的 ASP.NET Core ASP.NET MVC 5.x 获取一个本地化文本 在服务端 在MVC控制器 在MVC视图 在Javascript 格式化参数 默认本地化源 扩展本地化源 获取语言 最佳实践 介绍 任何应用程序都会包含至少一种语言.许多的应用程序都包含多种语言.ABP提供了灵活的本地化系统. 应用程序语言 首要的事情是声明支持哪种语言.在模

C#中内嵌资源的读取

起因 作为一个从Cpper转到C#并且直接从事WPF开发的萌新来说,正式编码过程中碰到了不少问题,一路上磕磕碰碰的.因为软件设计需求上的要求,需要将一些配置文件(XML.INI等)内嵌到程序中,等需要时进行读取.找了不少资料,加上自己的连蒙带猜,终于搞定了.在此,乘着还热乎着赶紧记录下.本人用的是Visual Studio 2015 英文版,其实都差不多的. 实现步骤 执行程序中加入内嵌文件步骤 在执行程序中找到 Resources.resx 并双击,会进入项目属性的 Resources 选项卡

【转】WebResource实现在自定义控件中内嵌JS文件

在类库中的资源  其他项目中要使用 需要嵌入才行 参考文献:WebResource实现在自定义控件中内嵌JS文件 1. WebResource简介 ASP.NET(1.0/1.1)给我们提供了一个开发WebControl的编程模型,于是我们摆脱了asp里面的include模式的复用方式.不过1.0/1.1提供的Web控件开发模型对于处理没有image.css等外部资源的组件还算比较得心应手,script虽然很多时候也是外部资源,但在开发控件的时候我们习惯把script使用Page.Registe

wpf中内置资源文件

wpf中包含三种文件类型 资源文件:编译到可执行或库 WPF 程序集中的数据文件. 内容文件:与可执行 WPF 程序集具有显式关联的独立数据文件. 源站点文件:与可执行 WPF 程序集没有关联的独立数据文件. 这三种类型的文件之间的一个重要区别是:资源文件和内容文件在生成时是已知的:程序集明确地知道它们的存在.但是对于源站点文件,程序集可能完全不知道它们,或者通过 pack 统一资源标识符 (URI) 引用知道它们的存在:在后一种情况下,不能保证被引用的源站点文件实际存在. 说说资源文件的使用

ABP官方文档翻译 4.4 授权

授权 介绍 关于IPermissionChecker 定义权限 检查权限 使用AbpAuthorize特性 AbpAuthorize特性注意点 抑制授权 使用IPermissionChecker 在Razor视图 客户端(Javascript) 权限管理 介绍 几乎所有的企业应用都在一定程度上使用授权.在应用中,授权用来检查用户是否允许执行一些特定的操作.ABP定义了一个基础的权限设施来实现授权. 关于IPermissionChecker 授权系统使用IPermissionChecker来检查权

ABP官方文档翻译 3.3 仓储

 仓储 默认仓储 自定义仓储 自定义仓储接口 自定义仓储实现 基础仓储方法管理数据库连接 查询 获取单个实体 获取实体列表 关于IQueryable 自定义返回值 插入 更新 删除 其他 关于异步方法 管理数据库连接 仓储生命周期 仓储最佳实践 协调领域和数据映射层,使用类集合接口访问领域对象."(Martin Fowler) 实际上,仓储用来执行领域对象的数据库操作(实体和值类型).通常,每个对象(或聚合根)使用单独的仓储. 默认仓储 在ABP中,仓储类实现IRepository<TEn

ABP官方文档翻译 10.1 ABP Nuget包

ABP Nuget包 Packages Abp Abp.AspNetCore Abp.Web.Common Abp.Web Abp.Web.Mvc Abp.Web.Api Abp.Web.Api.OData Abp.Web.Resources Abp.Web.SignalR Abp.Owin Abp.EntityFramework.Common Abp.EntityFramework Abp.EntityFramework.GraphDiff Abp.EntityFrameworkCore Ab