Ornament 添加 PortableArea 项目

一般流程:

1) 创建Mvc4 空 项目,如 Finance.Web.Plugin

2)引用

  • Qi.dll
  • Ornament.Web.Core
  • Ornament.Web.PortableAreas.dll

3)  创建一个 Area , 如叫做 Finance

4) 然后打开【Web项目】\Areas\Finance\FinanceAreaRegistration.cs ,下图是自动生成的。

Ornament 添加 PortableArea 项目_第1张图片

然后我们要改为

Ornament 添加 PortableArea 项目_第2张图片

6)创建一个新Controller, 如ExchageRate,并且生成第一个View 如图:

记得把View设置为嵌入资源

Ornament 添加 PortableArea 项目_第3张图片

 

然后再主项目 引入  Finacy.Web.Plugin.dll 

启动就可以通过:localhost:XXX/Finacy/ExchangeRate 访问我们刚刚创建的页面。

 

 

NHibernate 注册

由于Ornament项目是使用NH的。因此需要在AreaRegistry 中注册Dao以及NH的Mapping

创建两个项目

1)Finance.Core, 实体以及基本业务逻辑

  • ExchageRate.cs 实体类。就是汇率的基本信息和一些简单的业务路基,如卖出价和买入价
     1 using System;
     2 using Qi.Domain;
     3 
     4 namespace Finance
     5 {
     6     public class ExchangeRate : DomainObject<ExchangeRate, string>
     7     {
     8         
     9         public ExchangeRate()
    10         {
    11         }
    12 
    13         public ExchangeRate(string englishName,decimal bindRate,decimal offerRate)
    14         {
    15             this.CurrencyEnglinshName = englishName;
    16             this.BidRate = bindRate;
    17             this.OfferRate = offerRate;
    18         }
    19         public virtual string CurrencyEnglinshName { get; set; }
    20         public virtual string CurrencyChineseName { get; set; }
    21         /// <summary>
    22         ///    买入价格
    23         /// </summary>
    24         public virtual decimal BidRate { get; set; }
    25 
    26         /// <summary>
    27         ///    卖出的价格。
    28         /// </summary>
    29         public virtual decimal OfferRate { get; set; }
    30 
    31         /// <summary>
    32         ///     计算出卖出一分的价格
    33         /// </summary>
    34         /// <param name="points"></param>
    35         /// <returns></returns>
    36         public virtual decimal CaculateForSelling(int sellsAmount)
    37         {
    38             if (sellsAmount < 0)
    39                 throw new ArgumentOutOfRangeException("sellsAmount", "points should larger than 0");
    40             return sellsAmount * OfferRate;
    41         }
    42      
    43     }
    44 }
    View Code
  • IExchangeRateDao 一个dao接口,实现了,如下:
  • Ornament 添加 PortableArea 项目_第4张图片

2)Finance.Dao.NhImple NHibernate Mapping 以及 Dao的实现,这里强烈推荐使用 FluentNHibernate

Ornament 添加 PortableArea 项目_第5张图片

 

然后再回到Finace.Web.Plugin 中的 FinanceAreaRegistration.cs 文件中去,并且引用了Finance.Dao.NhImple,添加RegistryDao方法。

Ornament 添加 PortableArea 项目_第6张图片 

那么Dao就注册完成了

 

js/Seajs内嵌模块

 1)创建一个seajs 模块,如为刚刚创建的ExchangeRate.cshtml, 添加一套js 控件。如下图:

 

Ornament 添加 PortableArea 项目_第7张图片

 

  1. js 文件的位置可以随意放。但是一定要把 Index.js改为内嵌文件,否则主测试就找不到它
  2. index.cshtml 引用 路径 第一个一用必须 是AreaName 如 "~/Finance/"  就是Area的名称。后面就是路径名称。

2) 再次回到Finance.Web.Plugin 中 的 FinanceAreaRegistration 文件。

Ornament 添加 PortableArea 项目_第8张图片

 

  1. AreaRegistraionHelper 是调用SeajsBundle.dll 来处理 Seajs 模块的问题。
  2. 构造函数要提供 Finance.Web.Plugin这个根命名空间,因为程序是无法知道这个Aseembly的Root nameSpace,而内嵌资源刚好是用 全命名空间进行查找。如Index.js 再Assembly的位置其实是 Finance.Web.Plugin.Scripts.Exchangerate.Index.js,而Bundle提供的VirtualPath 却是 ~/Finance/Scripts/ExchangeRate/index.js 因此需要把 AreaName替换为根命名空间。
  3. RegistrySeajsModule方法,只能查找这个命名空间下的js文件,而不会理会子文件夹。如 Scripts/ExchangeRate/SubFolder/ 那么需要再写一边 helper.RegistySeajsModule("Scripts/ExchangeRate/Subfolder");

这样编译之后就可以通过流量器

localhost:XX/Financy/ExchangeRate/index.js 去访问index。js文件了。

你可能感兴趣的:(table)