• MVC小结


    M是指业务模型,V是指用户界面,C则是控制器
    MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: [1]
    Model(模型)表示应用程序核心(比如数据库记录列表)。
    View(视图)显示数据(数据库记录)。
    Controller(控制器)处理输入(写入数据库记录)。

    MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。
    Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
      通常模型对象负责在数据库中存取数据。
    View(视图)是应用程序中处理数据显示的部分。
      通常视图是依据模型数据创建的。
    Controller(控制器)是应用程序中处理用户交互的部分。
      通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
    MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
    MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。

    BLL 业务逻辑层
    屏幕录像专家
    EF Power Tools CTP1
    人才网三层架构搭建
    三层架构+ASP.NET MVC3架构

    安装Entity Framework(管理解决方案程序包)
    使用后,发现一个问题
    在进行Reverse Engineer Code First时
    会出现
    参数错误。(异常来自HRESULT:0x80070057)
    如何解决呢,查过网络上一些解决办法,都没办法解决我的问题
    后来才发现是目标框架问题(我使用的框架是4.5.2)
    删除 C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET files 文件夹
    删除C:UsersLEAppDataLocalTemp/Temporary ASP.NET files 文件夹
    修改连接属性中的高级属性Integrated Security为True
    修改连接属性中的高级属性Persist Security Info为True
    点击项目属性,对目标框架进行修改,修改为.NET Framework 4.5.1

    一些视频中不符的做法,添加引用Entity Framework
    实际,我本人是没找到的
    可以在Nuget-解决方案中添加Entity Framework

    关于添加mdf文件创建数据库
    1.在对象资源管理器中找到“数据库”,右键单击,选择“附加”
    2.在附加数据库对话框中点击“添加”
    3.附加数据库中出现选中的mdf文件数据库,点击“确定”

    Linq to Sql
    Linq to Entities
    Entity Framework(简称EF,实现数据接口)

    添加EF的几种方式:
    直接创建MVC3 Internet应用程序(前提要求安装了相应的EF及相关插件)
    直接找到EntityFrameWork.dll(注意版本要求是1.1),手工添加引用到项目中
    采用NuGet方式安装

    分成三层,web,DAL(数据访问层),BLL(业务逻辑层,起中转作用)
    Web引用BLL和DAL和Entity
    DAL引用Entity
    BLL引用DAL和Entity
    MyJob.DAL.Entities.C_Provinces

    定义模型类,将类映射到数据库中表

    嵌入式数据库

    包含视图的MVC5控制器(使用Entity Framework)
    可以进行创建、读取、更新、删除、列出(增删改查),包含Razor视图
    模板,模型类

    添加控制器Mvc5时,出现错误(运行所选代码生成器时出错)
    管理解决方案的NuGet程序包
    添加Entity Framework
    添加EntityFramework.SqlServerCompact

    找不到数据库位置
    最终在SQL Server对象资源管理器中找到……

    没有连接串的情况:
    默认情况下,未指明时,EF Code First将在SQL Express中创建一个与DbContext同名的数据库

    显示指定连接字符串:
    在web.config中增加一个连接串设备来显示指定,连接串的名字需要匹配DbContext类的名字。默认景象下,EF将会查找同名的连接串来决定数据库的位置




    Control层作用:
    1.决定与“用户”沟通的渠道
    2.决定系统运作的流程
    3.负责从Model中获取数据
    4.决定显示哪个View视图
    5.在发生错误时选择适当的View进行响应

    View层:
    主要作用:输出和接受用户的输入

    三者之间的关系:
    Http->Control->Model->View
    既关联又独立

    自动生成代码,将实体以及存储逻辑混合在一起
    Linq to Sql
    Linq to Entity
    缺点:
    编写测试,无法拆分单独测试;
    调试Bug中,不容易调试

    asp.net Respositories(库模式)
    针对接口编程,使程序代码可以实现最大程度的扩展
    方便ASP.NET.MVC的单元测试
    为后期实现IOC控制反转打下基础

    添加时的一个麻烦,一直打不开文件夹
    解决:显示所有文件

    @Url.Content()

    暂时修改了MyJob.DAL下HuilianJobContext的命名空间namespace MyJob.Entity.Models为namespace MyJob.DAL

    接口里面不需要public

    可枚举类型定义
    public enum LoginStatus
    {
    Success,Failed,Locked
    }

    Trim()作用:
    去掉字符序列左边和右边的空格,不去除字符序列中间的空格
    str=” I will”;
    str=Trim(str);
    这时候str=”I will”;

    style=”background:url(文件路径):95px;height:30px;”

    远程验证,通过属性标签进行定义
    在MyJob.DAL中添加引用System.Data.Entity

    因为有所不同,在根据登录的用户名来获取个人会员实体时,要从Entity.Models中获取

    Configuration(配置)
    viewbag特点:
    是从controller向view传值用的(动态类型)
    不再是字典的键值对结构,而是动态结构,会在程序执行的时候动态解析
    是MVC3独有的,基于Asp.Net.Mvc4.0和net framework
    在viewpage中查询数据时不需要类型转换
    可读性好

    Control",简称IoC。也许有人不快习惯这样的开发方法,但在规划较大的软件架构时,这种方法却可以有效降低类之间互相依赖的情况,不但能增加架构的弹性,也能有效降低软件的复杂度。

    如果不考虑控制反转的情况,采用比较直接的开发方式,当然是不用先建立接口而直接建立类,然后直接在应用层中调用即可。如此一来,应用层的对象就会与BLL层对象高度相依。这样的相依性会导致这两个类无法拆开。为什么要拆开这两个类呢?由于单元测试是软件测试的最小单位,所以如果日后导入单元测试,那么这种两个类彼此相依的状况就会导致单元测试难以进行。 
    
    为了避免应用层对象与BLL层对象或BLL层对象与DAL层对象产生相依性,我们需要替BLL层对象加上一个IBLL接口,而在应用层对象中则可以通过IBLL接口来执行BLL对象的动作。但即使是这样,BLL对象与应用层对象的相依性还是存在,因为在应用层对象构造符处还是需要建立实体的BLL对象,如 IBLL _bll = new BLL(); 
    
    为了解决耦合度问题,引入了控制反转IoC。目前网络上可以使用的控制反转容器有很多,例如微软的Unity、Castle Windsor、Autofac、StructureMap等都拥有广大的支持者。下面就简单介绍我在项目中运用的Autofac,也是目前性能比较好的控制反转容器之一。
    

    关于Global.asax文件的一些解释:
    Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法。你可以使用这个文件实现应用程序安全性以及其它一些任务。

    Global.asax 位于应用程序根目录下。
    虽然 Visual Studio .NET 会自动插入这个文件到所有的 ASP.NET 项目中,但是它实际上是一个可选文件。删除它不会出问题——当然是在你没有使用它的情况下。
    .asax 文件扩展名指出它是一个应用程序文件,而不是一个使用 aspx 的 ASP.NET 文件。
    Global.asax 文件被配置为任何(通过 URL 的)直接 HTTP 请求都被自动拒绝,所以用户不能下载或查看其内容。
    ASP.NET 页面框架能够自动识别出对Global.asax 文件所做的任何更改。在 Global.asax 被更改后ASP.NET 页面框架会重新启动应用程序,包括关闭所有的浏览器会话,去除所有状态信息,并重新启动应用程序域。

    Mvc转换
    Html.

    用户自定义局部视图(创建视图布局页)

    region 用户自定义局部视图

        [ChildActionOnly]
        public ActionResult Header()
        {
            return View();
        }
        [ChildActionOnly]
        public ActionResult Footer()
        {
           
            return View();
        }
        [ChildActionOnly]
        public ActionResult Left()
        {
            Per per = Session["user"] as Per;
            ViewBag.PerId = per.PerId;
            return View();
        }
        [ChildActionOnly]
        public ActionResult Navigator(int tag) {
            return View(tag);
        }
        #endregion
    

    @{Html.RenderAction(“分布视图名”,”分布视图”);}

    regexp
    正则验证

    regexp
    正则验证

    TempData(取出即消失)

    js写法(写在页面开头)
    @section HeaderSection{

    }
    修改
    |
    删除

    &nbsp(空格占位符)

    MyJob_2018MyJobScripts下的GetCode.aspx中的

    3.controller

  • 相关阅读:
    unserialize() 反序列化报错,疑似乱码解决 阿星小栈
    js判断输入字符串是否为空、空格、null的方法总结 阿星小栈
    navicat中创建存储过程、触发器和使用游标的简单实例(图文) 阿星小栈
    mysql触发器new和old区别 阿星小栈
    div垂直居中
    javascript 原型详解
    对Web标准的理解。可用性和可访问性
    css兼容问题
    $(...).live is not function
    js判断两个对象是否相等
  • 原文地址:https://www.cnblogs.com/mumuyinxin/p/9663532.html
Copyright © 2020-2023  润新知