打开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

 

Abp\Framework\scripts\libs\requirejs\plugins\service.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);
});
}
};
});

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

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

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

         public async Task<ActionResult> GetScripts()
{
var sb = new StringBuilder(); sb.AppendLine(_multiTenancyScriptManager.GetScript());
sb.AppendLine(); sb.AppendLine(_sessionScriptManager.GetScript());
sb.AppendLine(); sb.AppendLine(_localizationScriptManager.GetScript());
sb.AppendLine(); sb.AppendLine(await _authorizationScriptManager.GetScriptAsync());
sb.AppendLine(); sb.AppendLine(await _navigationScriptManager.GetScriptAsync());
sb.AppendLine(); sb.AppendLine(await _settingScriptManager.GetScriptAsync()); sb.AppendLine(GetTriggerScript()); return Content(sb.ToString(), "application/x-javascript", Encoding.UTF8);
}

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

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

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

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

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

SimpleTaskSystem\SimpleTaskSystem.WebSpaAngular\Abp\Framework\scripts\libs\angularjs\abp.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

ABP dynamic API的更多相关文章

  1. ABP源码分析三十六:ABP.Web.Api

    这里的内容和ABP 动态webapi没有关系.除了动态webapi,ABP必然是支持使用传统的webApi.ABP.Web.Api模块中实现了一些同意的基础功能,以方便我们创建和使用asp.net w ...

  2. ABP源码分析三十七:ABP.Web.Api Script Proxy API

    ABP提供Script Proxy WebApi为所有的Dynamic WebApi生成访问这些WebApi的JQuery代理,AngularJs代理以及TypeScriptor代理.这些个代理就是j ...

  3. ABP源码分析三十八: ABP.Web.Api.OData

    如果对OData不熟悉的话可参考OData的初步认识一文以获取OData的一些初步知识. API.Odata 模块唯一用处就是提供了一个泛型版本的ODataController,实现了Controll ...

  4. abp 基于api接口的页面内容提交

    项目中,后端api接口需要接收来自页面提交的数据.注意下拉控件对应值,应该按以下方式赋值 @Html.DropDownListFor(m => m.IsFolder, new List<S ...

  5. VUE带Token访问Abp Vnext Api

    上篇登录保存token用了3种方式,都可以在header带上Token访问,本次使用第四种保存方式Vuex中保存状态 stroe中配置好需要保存的字段及方法 import Vue from 'vue' ...

  6. [ABP框架]动态web Api的拦截用法。

    先进行配置 首先这种需求,一般发生在APP端,我们给APP,不会给所有项目系统的接口给他们用.我们系统有200个接口,但是APP的需求只会用20个.那么这个需求也就应运而生了. 以上为API文件夹中为 ...

  7. ABP文档 - Javascript Api

    文档目录 本节内容: AJAX Notification Message UI Block & Busy Event Bus Logging Other Utility Functions A ...

  8. ABP文档 - Web Api 控制器

    文档目录 本节内容: 简介 AbpApiController 基类 本地化 其它 过滤 审计日志 授权 防伪造过滤 工作单元 结果包装和异常处理 结果缓存 验证 模块绑定器 简介 通过Abp.Web. ...

  9. ABP官方文档翻译 5.2 动态We API层

    动态Web APID层 创建动态Web API控制器 ForAll方法 重写ForAll ForMethods Http动词 WithVerb方法 HTTP特性 命名约定 API管理器 RemoteS ...

随机推荐

  1. 【Raspberry Pi】新入手的Raspberry Pi3拼装日志

    一.概述 2016年暑假某宝入手Raspberry Pi 3,装机清单: 树莓派主板 亚克力外壳 小风扇 散热片 30G SD card 螺丝若干颗 因机型问题,可能与你的机器有微小差异 二.装机过程 ...

  2. 2016huasacm暑假集训训练四 DP_B

    题目链接:http://acm.hust.edu.cn/vjudge/contest/125308#problem/M 题意:有N件物品和一个容量为V的背包.第i件物品的费用是体积c[i],价值是w[ ...

  3. Go语言配置与开发环境配置

    1.首先下载go的运行时 http://golang.org/dl/  下载windows 的zip版本,解压到硬盘上的一个位置 2.设置环境变量如下 GOBIN %GOROOT%\bin //go的 ...

  4. 【emWin】例程二:显示“hello,world”

    实验指导书及代码包下载: http://pan.baidu.com/s/1c1Csx48

  5. DS实验题 融合软泥怪-2 Heap实现

    题目和STL实现:DS实验题 融合软泥怪-1 用堆实现优先队列 引言和堆的介绍摘自:Priority Queue(Heaps)--优先队列(堆) 引言: 优先队列是一个至少能够提供插入(Insert) ...

  6. openwrt的配置

    1,参考:http://www.cnblogs.com/gnuhpc/archive/2013/08/31/3293643.html(此人的博客还是挺不错的) http://www.cnblogs.c ...

  7. goaccess的安装和使用

    一.简介1.goaccess用于分析apache和nginx日志的强大工具 2.官网:https://goaccess.io 二.安装1.下载goaccess的安装包wget http://tar.g ...

  8. Map<Key,Value>基于Value值排序

    Map<Key,Value> 排序默认是按照KEY值的升序来进行. 针对按照Value来进行排序有两种方法: 第一种 使用TreeMap  代码如下 public class test{ ...

  9. github for window的代理设置方法

    修改 .gitconfig 文件,主要是针对http 和 https进行修改,设置代理 [user] name = name email = mail@.com [http] proxy = 配置文件 ...

  10. 基于apache的tomcat负载均衡和集群配置

    最近不是很忙,用零碎时间做点小小的实验. 以前公司采用F5负载均衡交换机,F5将请求转发给多台服务器,每台服务器有多个webserver实例,每个webserver分布在多台服务器,交叉式的分布集群. ...