• ABP dynamic API


    打开ABP的事例项目SimpleTaskSystem.WebSpaAngular 中LayoutView


    <!-- Dynamic scripts of ABP system (They are created on runtime and can not be bundled) -->

    <!-- 添加对ABP系统运行时动态创建的脚本文件的引用 -->

    <script src="~/api/AbpServiceProxies/GetAll?type=angular"></script>
    <script src="~/AbpScripts/GetScripts" type="text/javascript"></script>


    1).<script src="~/api/AbpServiceProxies/GetAll?type=angular"></script>

    Abp.WebApi.Controllers.Dynamic.Scripting.AbpServiceProxiesController

     

    AbpFrameworkscriptslibs equirejspluginsservice.js

    define(function () {
        return {
            load: function (name, req, onload, config) {
                var url = abp.appPath + 'api/AbpServiceProxies/Get?name=' + name;
                req([url], function (value) {
                    onload(value);
                });
            }
        };
    });
    View Code

    2).<script src="~/AbpScripts/GetScripts" type="text/javascript"></script>

    通过在 script标签中添加控制器(AbpScriptsController)请求路径,来引如所有需要动态生成的脚本文件。这些脚本文件包含多租户管理脚本,session、本地化脚本、权限、导航、系统设置、事件触发器。

    Abp.Web.Mvc.Controllers.AbpScriptsController控制器是用来提供各种动态脚本文件的

     1         public async Task<ActionResult> GetScripts()
     2         {
     3             var sb = new StringBuilder();
     4 
     5             sb.AppendLine(_multiTenancyScriptManager.GetScript());
     6             sb.AppendLine();
     7 
     8             sb.AppendLine(_sessionScriptManager.GetScript());
     9             sb.AppendLine();
    10             
    11             sb.AppendLine(_localizationScriptManager.GetScript());
    12             sb.AppendLine();
    13             
    14             sb.AppendLine(await _authorizationScriptManager.GetScriptAsync());
    15             sb.AppendLine();
    16             
    17             sb.AppendLine(await _navigationScriptManager.GetScriptAsync());
    18             sb.AppendLine();
    19             
    20             sb.AppendLine(await _settingScriptManager.GetScriptAsync());
    21 
    22             sb.AppendLine(GetTriggerScript());
    23 
    24             return Content(sb.ToString(), "application/x-javascript", Encoding.UTF8);
    25         }

    NavigationScriptManager   ----负责创建导航脚本文件

    LocalizationScriptManager  ----负责创建本地化脚本文件

    AuthorizationScriptManager --负责创建用户所有的权限脚本文件

    SettingScriptManager    ----负责创建自定义设置脚本文件

    GetTriggerScript      ----负责创建ABP系统的前端的事件总线

    SimpleTaskSystemSimpleTaskSystem.WebSpaAngularAbpFrameworkscriptslibsangularjsabp.ng.js

    该脚本文件向AngularJS中注入$httpProvider,实现请求模板地址的重定向。当请求模板 /App/Main/views/user/new.cshtml 时,会将Http请求的地址进行格式化(http://localhost:6247/AbpAppView/Load?viewUrl=/App/Main/views/user/new.cshtml)指向 Abp.Web.Mvc.Controllers.AbpAppViewController.Load()。根据传入的模板相对地址找到模板并返回。

    /Abp/Framework/scripts/abp.js

    ABP开发规则:

    1).ILocalizableString 类型属性必须在资源文件中设置,否则异常 

    HttpHandler

     Abp.Web.Mvc.Resources.Embedded.Handlers

  • 相关阅读:
    bootstrap fileinput 无法显示中文bug
    js防止回车(enter)键提交表单及javascript中event.keycode
    php 生成唯一随机码
    thinksns 分页数据
    详解PHP处理密码的几种方式
    windows7 在cmd中执行php脚本
    php 无限级分类 递归+sort排序 和 非递归
    CentOS 创建SVN 服务器,并且自动同步到WEB 目录
    微擎笔记
    laravel php框架 知识点及注意问题
  • 原文地址:https://www.cnblogs.com/JarviseZhou/p/4676213.html
Copyright © 2020-2023  润新知