NancyFx 2.0的开源框架的使用-AspnetBootstrapping

来源:互联网 发布:cf一键瞬狙数据 编辑:程序博客网 时间:2024/06/06 01:57

新建一个空的Web项目AspnetBootstrappingDemo

然后添加NuGet组件

  • Nancy
  • Nancy.Hosting.Aspnet
  • Nancy.ViewEngines.Razor

继续往项目里面添加Module,Views,Models文件夹,然而先写Models文件夹里面的类,往Models文件夹添加 RatPack类

 public string FirstName { get; set; }

再往Models文件夹里面添加RatPackWithDependencyText类,并让它继承RatPack

 public string ApplicationDependencyText { get; set; }        public string RequestDependencyText { get; set; }

再往Models文件夹里添加IApplicationDependency类

 string GetContent();

再往Models文件夹里面添加IRequestDependency类

 string GetContent();

再往Models文件夹里面添加ApplicationDependency类

复制代码
private readonly DateTime currentDateTime;        /// <summary>        /// 初始化 RequestDependencyClass 类的新实例        /// </summary>        public ApplicationDependency()        {            this.currentDateTime = DateTime.Now;        }        public string GetContent()        {            return "这是一个应用程序级依赖项, 构建在:" + this.currentDateTime.ToLongTimeString();        }
复制代码

继续往Models文件夹里面添加RequestDependency类

复制代码
 private readonly DateTime currentDateTime;        /// <summary>        /// 初始化 RequestDependency 类的新实例        /// </summary>        public RequestDependency()        {            this.currentDateTime = DateTime.Now;        }        public string GetContent()        {            return "这是按请求的依赖项, 构造于:" + this.currentDateTime.ToLongTimeString();        }
复制代码

然后往Module文件夹里面添加DependencyModule类

复制代码
private readonly IApplicationDependency applicationDependency;        private readonly IRequestDependency requestDependency;        public DependencyModule(IApplicationDependency applicationDependency,IRequestDependency requestDependency)        {            this.applicationDependency = applicationDependency;            this.requestDependency = requestDependency;            Get("/",Lexan=>            {                var model = new RatPackWithDependencyText                {                    FirstName="Lexan",                    ApplicationDependencyText=this.applicationDependency.GetContent(),                    RequestDependencyText=this.requestDependency.GetContent()                };                return View["razor-dependency",model];            });        }
复制代码

继续往根目录下添加Bootstrapper类

复制代码
 protected override void ConfigureApplicationContainer(TinyIoCContainer container)        {            //base.ConfigureApplicationContainer(container);            //将应用程序依赖项注册为普通的单一实例            container.Register<IApplicationDependency,ApplicationDependency>().AsSingleton();            //将每个请求的依赖项注册为每个请求的单一实例            container.Register<IRequestDependency,RequestDependency>().AsPerRequestSingleton();        }
复制代码

然后往Views文件夹里面添加razor-dependency页面

复制代码
<!DOCTYPE html><html><head>    <meta name="viewport" content="width=device-width" />    <title>剃刀视图引擎Demo</title></head><body>    <div>    <h1>你好,@Model.FirstName</h1>        <p>这是一个剃刀的页面</p>        <p>@Model.ApplicationDependencyText</p>        <p>@Model.RequestDependencyText</p>    </div></body></html>
复制代码

最后修改Web.config文件

复制代码
      <httpHandlers>      <add verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*" />    </httpHandlers>  </system.web>    <system.webServer>    <modules runAllManagedModulesForAllRequests="true" />    <validation validateIntegratedModeConfiguration="false" />    <handlers>      <add name="Nancy" verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*" />    </handlers>  </system.webServer>
复制代码

运行看看界面如何

原创粉丝点击