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:\Users\LE\AppData\Local\Temp/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(文件路径):width: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_2018\MyJob\Scripts下的GetCode.aspx中的

复制的文件,右键,包含在项目中

强类型转换
List persex=((Sex)int.Parse(per.sex)).ToString();
设置枚举值(不允许有符号存在)
public enum Sex
{
男=1,
女=0
}

封装方法(如果存在字符)
public static String GetNowStateById(string stateId)
{
var list = GetNowState(int.Parse(stateId));
return list.Where(m=>m.Value==stateId).Single().Text;
}

OrderBy//排序
//根据传进来的多个公司行业ID,来获取公司行业名称
public static String GetIndustrysByIds(string ids)
{
var _ids = id.Spit(‘;’);
SptringBuilder sb = new StringBuilder();
var i=0;
foreach(string id in _ids)
{
i++;
var model = (new IndustryManager()).GetById(id);
sb.Append(model.Name);
if(i!=_ids.Length)
{
sb.Append(“:”);
}
}
return sb.ToString();
}

public Action LogOff()
{
Session.Abandon;
Session.Clear();
FormsAuthentication.SignOut();
}

FckEditor的配置与使用
1.添加js引用
zh-CN.js(中文包)
kindeditor.js(FckEditor)
2.使用前

        $("#Position_b").change(function () {
            var fid = this.value;
            var url = "/Company/EditComJobInfo?recruitId=" + "@Model.RecruitId" + "&positionFid=" + fid + "&temp=" + (new Date()).getTime();
            location.href = url;
        });
    });
    //Kindeditor(js写法)
    var editor1;
    var editor2;
    KindEditor.ready(function (K) {
        editor1 = K.create('textarea[name="JobNote"]', {
            allowFileManager: true
        });
        editor2 = K.create('textarea[name="Describe"]', {
            allowFileManager: true
        });
    });
</script>

3.controller

posted @ 2018-09-17 17:51  海韵༒听心 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/mumuyinxin/articles/9663532.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值