===5.復習整套流程==
1.從表現層開始:表現層在控制器里,寫了業務代碼;調用了業務層對象獲取權限集合
2.表現層需要使用數據自己new個業務層,缺點就是不可變。
3.現在是面向接口編程,表現層調用業務接口。業務接口這么多類接口類,需要一個個生成很多,我們用T4生成很多類。
4.都需要具體業務對象實例化,變接口是只認接口不認具體的業務層,交給Spring.net實例化;
5.表現層沒有加實現層的應用BLLA,所以通過第三方,spring.Net反射的方式加載程序集;加載BLLA對象加載過來。
如下代碼:namespace MVCOA.Logic
{
public class HomeController:Controller
{
public ActionResult Index()
{
IBLL.IOu_PermissionBLL idb;//通過Spring.net反射方式加載程序集。
}
}
}
6.表現層調用業務接口IBLL,IBLL里面有那么多接口,都用Spring.net創建,要寫好多配置文件,太多了,也很麻煩。
7.所以就用倉儲,表現層添加MVCOA.Helper程序集和OperateContext類,在里面定義了個業務倉儲: public static IBLL.IBLLSession bllSession = DI.SpringHelper.GetObject<IBLL.IBLLSession> ("BLLSession");
所以bllSession里擁有所有業務層的對象;
8.表現層控制器OperateContext點,就出來所有的類。例如:List<MODEL.Ou_Permission>list=OperateContext.所以類
9.業務倉儲IBLL.IBLLSession BLLsession=DI.SpringHelper.GetObject<IBLL.IBLLSession>("BLLSession");//業務倉儲IBLLSession需要實例化,就用Spring,net幫我們實例化。所以這個時候實例化
就寫這一個配置文件就夠了。
10.對應的類型type=BLLA.BLLSession(業務倉儲),到時候Spring.net就會幫我創建對象。
付給操作上下文的OperateContext類的倉儲熟悉: List<MODEL.Ou_Permission> list = OperateContext.bllSession.IOu_PermissionBLL.GetListBy(p => p.pIsDel == false);
11.通過業務倉儲屬性bllSession找到業務權限操作接口;
======創建后台管理區域及分離======================================
1.頁面我們分兩套的:1.要么新建個項目;2.區域分離,我們這次用區域分離。先做的是后台管理系統,管理員進來這一套。
2.uiweb界面右鍵添加管理區域,名字admin,刪除Controller.
3.在ui文件夾右鍵添加MVCOA.Login.Admin類庫,屬性改生成路徑:..\MVCOA\bin\
4.添加DI,MODEL,IBLL,MVCOA.Helper。(跟MVCOA.Loginic添加程序集是一樣的)
5.web里面不帶任何類,所以區域路由adminAreaRegistration.cs拷貝到MVCOA.Login.Admin類庫程序中。改命名空間名稱為:MVCOA.Login.admin,添加ef程序集system.data.entity和添加擴展 system.web.MVC4.0
6.為了解鎖效率,在區域路由,最好加個命名空間new string[1]{"MVCOA.Login.admin"} //根據路由配置直接匹配到。
7.override string AreaName下 return "admin",//對應區域Areas文件夾下,Admin。如果改變雙方都要改。如下代碼:
7.Models刪除,剛才是托過來的,所以要把uiweb界面區域注冊類刪掉,這樣就把Admin區域視圖和控制器就分離開了。
8.MVCOA.Login.Admin控制器要添加到webui界面。MVCOA.Login.Admin中添加用戶登陸Admin控制器,繼承Controller,導入命名空間system.web.MVC。
9.添加視圖:在Admin/view/添加文件夾Admin,添加跟ActionResult Login()同名的視圖Login;
========分布登錄效果1===============
MVCOA.Login.Admin程序集下:登陸控制器
AdminController : 登陸控制器
/// </summary> public class AdminController:Controller { #region 1.0 管理員登錄界面+ActionResult Login() /// <summary> /// 管理員登錄界面 /// </summary> /// <returns></returns> [HttpGet] public ActionResult Login() { return View(); } #endregion #region 2.0 管理員登錄界面+ActionResult Login() /// <summary> /// 管理員登錄界面 /// </summary> /// <returns></returns> [HttpPost] public ActionResult Login(FormCollection form)//Collection采集
{
return Content("哇哈哈哈!");
}
#endregion }
Login.cshtml
<title>Login</title> <style type="text/css"> #divMsg { display:none; border:1px solid #00ffff; height:150px; width:150px; } </style> @Scripts.Render("~/mvcAjax") <!--合並后的js文件--> <script type="text/javascript"> //Success成功 //(jsonDAta)成功后返回的相應報文 //1.Success(jsonDAta)名稱與 OnSuccess = "Success"是同名的。成功后執行Success(jsonDAta)方法參數; function Success(jsonDAta) { alert(jsonDAta) } </script> </head> <body> @using (Ajax.BeginForm("Login",new AjaxOptions() { //Success:加載成功! LoadingElementId(提示):設置屬性id HttpMethod = "post", OnSuccess = "Success",//當成功后 LoadingElementId = "divMsg"//屬性顯示:在加載中~~ })) { <input type="text" value="admin" name="txtName"/> <input type="password" value="123123" name="txtPwd" /> <input type="submit" value="登錄" /> } <div id="divMsg">在加載中~~</div> </body> </html>
圖一 圖二:點登錄效果