ASP.NET ZERO 学习 —— (9) 应用开发Demo之工程创建

来源:互联网 发布:mac os x怎么下载 编辑:程序博客网 时间:2024/05/19 15:39

介绍

本Demo是通过使用ASP.NET Zero创建一个电话簿的应用。本Demo会用到多租户,多语言,权限,配置,测试等模块。

创建工程

打开ASP.NET Zero项目,可以看到解决方案中包含了6个项目:

这里写图片描述

Nuget还原,数据库迁移完成后,运行并登录后可以看到以下界面:

这里写图片描述

现在注销。我们将应用改为单租户模式(后面将改为多租户)。所以,我们打开 XXXCoreModel 类,通过以下代码禁用多租户功能:

[DependsOn(typeof(AbpZeroCoreModule))]public class PhoneBookCoreModule : AbpModule{    public override void PreInitialize()    {        //Enable this line to create a multi-tenant application.        //Configuration.MultiTenancy.IsEnabled = true;    }}

添加一个新页面

首先在首页添加一个“Phone book”的页面

定义菜单项

MpaNavigationProvider 类用来定义菜单,当我们改变这个类后,菜单将自动的改变。打开这个类并按下面代码那样添加一个菜单项

.AddItem(new MenuItemDefinition(    PageNames.App.Tenant.PhoneBook,    L("PhoneBook"),    url: "Mpa/PhoneBook",    icon: "glyphicon glyphicon-book"    ))

每个菜单项都必须有一个唯一的名字作为标识。菜单名在PageNames类里面进行定义。我们添加一个叫“PhoneBook”的常量。

本地化菜单显示名

菜单项也应该有一个本地化的显示名,它用来在页面上显示菜单项。L(“PhoneBook”)就是用来本地化显示新菜单项的名字。L 是一个帮助方法,用来根据唯一标识来获取本地化字符串(见 MpaNavigationProvider 类)。

本地化字符串在.Core项目中的XML文件中定义,如下所示:

这里写图片描述

打开 AbpZeroTemplate.xml(默认语言,英语本地化配置)添加下面的代码:

<text name="PhoneBook" value="Phone book" />

如果我们没有定义”PhoneBook”的其他语言版本, 默认值将显示在所有语言版本中。我们可以在中文本地化配置文件AbpZeroTemplate-zh-CN.xml中添加以下代码:

<text name="PhoneBook" value="Phone book" />

其他菜单属性

url 是当我们点击菜单项后所需要跳转到的地址(这里是MVC Action

最后,icon 是菜单项的图标。它可以是一个 css 类。我们可以使用Glyphicon, Font-Awesome或其他CSS 字体库。

见导航文档了解更多菜单定义。

创建页面

当我们创建完菜单项后,我们可以创建一个空页面。

Controller

在Web项目Areas/Mpa/Controllers文件夹下,创建PhoneBookController

public class PhoneBookController : AbpZeroTemplateControllerBase{    // GET: Mpa/PhoneBook    public ActionResult Index()    {        return View();    }}

我们PhoneBookController 的基类改为AbpZeroTemplateControllerBase,如果我们从Controller派生它也会正常运行,只是AbpZeroTemplateControllerBase提供了更多有用的属性和方法。所以,除非在你的案例中有其他不利的影响,我们总是从AbpZeroTemplateControllerBase进行派生。

View

在Areas/Mpa/Views/PhoneBook文件夹下创建一个空的View, Index.cshtml

@using MyCompanyName.AbpZeroTemplate.Web.Navigation@{    ViewBag.CurrentPageName = PageNames.App.Tenant.PhoneBook;}<div class="row margin-bottom-5">    <div class="col-xs-12">        <div class="page-head">            <div class="page-title">                <h1>                    <span>@L("PhoneBook")</span>                </h1>            </div>        </div>    </div></div><div class="portlet light">    <div class="portlet-body">        <p>电话薄内容</p>    </div></div>

ViewBag.CurrentPageName 设置为当前页面名字,当页面被激活后将会高亮显示。运行后如下图所示:

这里写图片描述

菜单的显示名字和标题都是本地化的。

注意:需要访问MPA的路径,localhost:6240/map/welcome

0 0
原创粉丝点击