项目

ASP.NET Core MVC / Razor Pages 用户界面

简介

ABP提供了一种便捷舒适的方式来创建Web应用程序,使用ASP.NET Core MVC / Razor Pages作为用户界面框架。

ABP并未提供全新的UI开发方式。您可以继续使用现有技能创建UI界面。但它提供了众多特性,使您的开发更简便,代码库更易维护。

MVC与Razor Pages对比

ASP.NET Core为UI开发提供两种模式:

ABP同时支持MVC和Razor Pages两种模式。但建议采用Razor Pages方式创建UI页面,并使用MVC模式构建HTTP API。因此,所有预构建模块、示例和文档均基于Razor Pages进行UI开发,同时您始终可以应用MVC模式创建自定义页面。

模块化

模块化是ABP的核心目标之一。对于UI而言也不例外;可以开发具有独立可复用UI页面和组件的模块化应用程序与可复用应用模块。

应用启动模板 预装了一些应用模块。这些模块拥有嵌入在各自NuGet包中的UI页面。您在解决方案中看不到其代码,但它们在运行时能正常工作。

主题系统

ABP提供完整的主题系统,具有以下目标:

  • 可复用的 应用模块主题无关 的方式开发,因此可与任何 UI 主题配合使用。
  • UI主题由最终应用程序决定
  • 主题通过 NuGet/NPM 包分发,因此易于升级
  • 最终应用程序可自定义所选主题。

当前主题

目前官方提供三种主题:

此外还有一些社区驱动的ABP主题(可在网上搜索)。

基础库

所有主题均预装并支持一系列标准JavaScript/CSS库:

您可以在应用程序中直接使用这些库,无需手动导入页面。

布局

主题提供标准布局。因此您已拥有实现标准功能的响应式布局。下图截取自基础主题的应用布局:

基础主题应用布局

有关更多布局选项及其他细节,请参阅主题文档。

布局组件

典型布局包含多个组成部分。主题系统提供菜单工具栏布局钩子等功能,让您的应用程序和所用模块能够动态控制布局。

特性

本节重点介绍ABP为ASP.NET Core MVC / Razor Pages UI提供的一些特性。

动态JavaScript API客户端代理

动态JavaScript API客户端代理系统允许您从JavaScript客户端代码调用服务器端HTTP API,就像调用本地函数一样。

示例:从服务器获取作者列表

acme.bookStore.authors.author.getList({
  maxResultCount: 10
}).then(function(result){
  console.log(result.items);
});

acme.bookStore.authors.author.getList是一个自动生成的函数,内部向服务器发起AJAX调用。

更多内容请参阅动态JavaScript API客户端代理文档。

Bootstrap标签助手

ABP让编写Bootstrap HTML更简便且类型安全。

示例:渲染Bootstrap模态框

<abp-modal>
    <abp-modal-header title="模态框标题" />
    <abp-modal-body>
        太棒了,您正在模态框中阅读这段文字!
    </abp-modal-body>
    <abp-modal-footer buttons="@(AbpModalButtons.Save|AbpModalButtons.Close)"></abp-modal-footer>
</abp-modal>

更多内容请参阅 标签助手 文档。

表单与验证

ABP 提供 abp-dynamic-formabp-input 标签助手,极大简化了创建具备本地化、验证和AJAX提交功能的完整表单。

示例:使用 abp-dynamic-form 基于模型创建完整表单

<abp-dynamic-form abp-model="Movie" submit-button="true" />

详情请参阅表单与验证文档。

打包与压缩/客户端库

ABP提供灵活模块化的打包与压缩系统,用于在运行时创建包并压缩样式/脚本文件。

<abp-style-bundle>
    <abp-style src="/libs/bootstrap/css/bootstrap.css" />
    <abp-style src="/libs/font-awesome/css/font-awesome.css" />
    <abp-style src="/libs/toastr/toastr.css" />
    <abp-style src="/styles/my-global-style.css" />
</abp-style-bundle>

此外,客户端包管理系统提供了管理第三方库依赖的模块化且一致的方式。

请参阅 打包与压缩客户端包管理 文档。

JavaScript API

JavaScript API 为服务器端本地化、设置、权限、功能等提供了强大的抽象。它们还提供了向用户显示消息和通知的简单方式。

模态框、提示、小部件等

ABP为常见应用需求提供了大量内置解决方案:

自定义

有多种方式可以自定义主题和预构建模块的UI。您可以重写组件、页面、静态资源、包等。请参阅用户界面自定义指南

在本文档中