国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > 建站經(jīng)驗(yàn) > 正文

ASP.NET MVC中將控制器分離到類_庫的實(shí)現(xiàn)

2019-11-02 15:41:56
字體:
供稿:網(wǎng)友
         這篇文章主要介紹了ASP.NET MVC中將控制器分離到類庫的實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下  

        前言

  在、ASP.NET MVC的開發(fā)中,我們創(chuàng)建完項(xiàng)目之后,ASP.NET MVC是已Model-Controller-View的形式存在的,在創(chuàng)建項(xiàng)目自動(dòng)生成的內(nèi)容上Model我們很容易分離成類庫,所以這里不予說明,那么這時(shí)候我們就像Controller是不是也能夠分離出去呢?答案是肯定的,下面我們探討一下Controller如何分離出去。

  這里我提供兩種分離的方法,一是重寫方法繼承自IControllerFactory接口,實(shí)現(xiàn)里面的方法,二是MVC提供了直接在路由注冊(cè)里面去控制控制器的書寫,下面就這兩種類型簡(jiǎn)單貼一下代碼。

第一種方法

  代碼如下:當(dāng)寫完代碼之后再路由中注冊(cè)。提示:實(shí)現(xiàn)完成之后必須在路由規(guī)則方法(RegisterRoutes)里面進(jìn)行注冊(cè),注冊(cè)代碼如下:

    ControllerBuilder.Current.SetControllerFactory(new ControllersFactory("BookSystem_Controllers")); //BookSystem_Controllers為控制器的類庫

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 // 源文件頭信息: // <copyright file="ControllersFactory.cs"> // Copyright(c)2014-2034 Kencery.All rights reserved. // 創(chuàng)建人:韓迎龍(kencery) // 創(chuàng)建時(shí)間:2015-6-18 // </copyright>   using System; using System.Reflection; using System.Web.Mvc; using System.Web.Routing; using System.Web.SessionState;   namespace BookSystem_Controllers { /// <summary> /// 重寫注冊(cè)控制器的方法,使之能夠?qū)⒖刂破鞴芊蛛x到其它類庫中實(shí)現(xiàn) /// <auther> /// <name>kencery</name> /// <date>2015-6-18</date> /// </auther> /// </summary> /// 說明:IControllerFactory接口含有三個(gè)需要實(shí)現(xiàn)的方法:CreateController,GetControllerSessionBehavior,ReleaseController /// 使用:在MVC App_Start文件夾中的RouteConfig中的方法RegisterRoutes中的第一行中寫入下面注冊(cè)語句,Global.asax中也可注冊(cè),放到注冊(cè)路由之前即可 /// ControllerBuilder.Current.SetControllerFactory(new ControllersFactory("BookSystem_Controllers")); //BookSystem_Controllers為控制器的類庫 public class ControllersFactory : IControllerFactory { private readonly string _assemblyName; private readonly string _controlerDefaultNameSpage; private Assembly _controllerAssembly;   /// <summary> /// 獲取控制器所在的程序集名稱 /// </summary> public string AssemblyName { get { return _assemblyName; } }   /// <summary> /// 獲取控制器的默認(rèn)命名空間 /// </summary> public string ControlerDefaultNameSpage { get { return _controlerDefaultNameSpage; } }   /// <summary> /// 獲取控制器所在的程序集的Assembly實(shí)例 /// </summary> public Assembly ControllerAssembly { get { return _controllerAssembly ?? (_controllerAssembly = Assembly.Load(AssemblyName)); //加載控制器信息 } }   /// <summary> /// 構(gòu)造函數(shù)實(shí)例化 /// </summary> /// <param name="assemblyName"></param> public ControllersFactory(string assemblyName) { _assemblyName = assemblyName; }   /// <summary> /// 構(gòu)造函數(shù)實(shí)例化 /// </summary> /// <param name="assemblyName"></param> /// <param name="controlerDefaultNameSpage"></param> public ControllersFactory(string assemblyName, string controlerDefaultNameSpage) { _assemblyName = assemblyName; _controlerDefaultNameSpage = controlerDefaultNameSpage; }   /// <summary> /// 獲取控制器類的全名 /// </summary> /// <param name="controllerName">控制器名稱</param> public string GetControllerFullName(string controllerName) { return string.Format("{0}.{1}Controller", string.IsNullOrEmpty(ControlerDefaultNameSpage) ? AssemblyName : ControlerDefaultNameSpage, controllerName); }   /// <summary> /// 獲取控制器實(shí)例對(duì)象,根據(jù)controllerName生成一個(gè)沒有請(qǐng)求上下文對(duì)象的空的控制器,在為此控制器制定ControllerContext對(duì)象,然后返回控制器實(shí)例 /// </summary> /// <param name="requestContext"></param> /// <param name="controllerName"></param> public IController CreateController(RequestContext requestContext, string controllerName) { var controller = ControllerAssembly.CreateInstance(GetControllerFullName(controllerName)) as Controller; if (controller == null) return null; if (controller.ControllerContext == null) { co
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 启东市| 九龙坡区| 太康县| 东城区| 来宾市| 平湖市| 民权县| 海南省| 昭通市| 兰溪市| 西林县| 韶关市| 泰安市| 韩城市| 兴化市| 莲花县| 高淳县| 富源县| 鄄城县| 白山市| 临潭县| 雷波县| 鹿邑县| 湖南省| 平遥县| 大宁县| 根河市| 普陀区| 盐城市| 蓬莱市| 新干县| 沛县| 卓尼县| 栖霞市| 曲阳县| 鄯善县| 清远市| 珲春市| 湖北省| 太康县| 永济市|