打开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. bzoj1057: [ZJOI2007]棋盘制作--最大子矩阵

    既然要求最大01子矩阵,那么把应该为0的位置上的数取反,这样就变成求最大子矩阵 最大子矩阵可以用单调栈 #include<stdio.h> #include<string.h> ...

  2. SQL Injection(SQL注入漏洞)

    审计前准备: 1.安�php程序(推荐phpStudy) 2.高亮编辑器(推荐 Sublimetext Notepad++) 3.新建一个文本,复制以下变量,这些变量是审计中需要在源码中寻找的 ### ...

  3. NSDecimalNumber用于精度准确的计算

    在处理金额计算时,往往会涉及到小数,由于Double类型不准确,无法做到产品的要求.为了保证金额计算的准确性,建议使用NSDecimalNumber. 1.创建对象(常用的方法) // mantiss ...

  4. IOS网络第五天 AFN-01发送get和post请求

    ************AFN01-基本使用 #import "HMViewController.h" #import "AFNetworking.h" @in ...

  5. C# 动态调用webservice

    最近项目中,用到动态调用webservice的内容,此处记录下来,留着以后COPY(我们只需要在XML,config文件,或者数据库中配置webservice连接地址和方法名即可使用): using ...

  6. selenium python 安装

    环境为Win64位系统,默认已经安装python2.7到D:\Python27,此次使用的浏览器为chrome 下面是selenium的安装和chromedriver.exe的下载 1.安装selen ...

  7. 数字和为sum的方法数

    [编程题] 数字和为sum的方法数 给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数. 当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案. 输入描 ...

  8. mac os 下的sublime --- 快捷键

    mac os 下的sublime ---列模式 http://www.oschina.net/question/249672_161413 触控板也可以的:左手同时按住 Option 和触控板左下角 ...

  9. ASP.NET TextBox 当鼠标点击后清空默认提示文字[转]

    前台文本框里添加下面2个事件属性: OnFocus="javascript:if(this.value=='提示文字') {this.value=''}" OnBlur=" ...

  10. [SharePoint 2013] Create event receiver for external list

    Main list for creating event receiver for external list Subscribe   storage, it could be data table ...