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>

图一                                                                                                            图二:点登录效果

posted @ 2017-03-14 19:05  狼牙者.net  阅读(1748)  评论(1编辑  收藏  举报