3.MVC各層直接的關系


===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>

圖一                                                                                                            圖二:點登錄效果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM