学习《ASP.NET MVC5高级编程》——基架
基架——代码生成的模板。我姑且这么去定义它,在我学习微软向编程之前从未听说过,比如php代码,大部分情况下是我用vim去手写而成,重复使用的代码需要复制粘贴,即使后来我在使用eclipse这样的IDE书写javaee网站时候,大部分情况下也需要自己编程实现crud基本操作,这一次研究asp.net mvc时我惊奇的发现visual studio2013的强大功能:利用“基架”功能:
实践:新建好一个利用基架的Controller,见证强大的基架
第一步,新建一个MVC5项目
打开visual studio 2015,开始栏目下点击新建项目:
左边选择Visual C#下的Web,名称为“MusicStore”=》确定即可

接下来弹出选择MusicStore的开发类型:MVC,勾选添加单元测试。
点击确定进入项目:
第二步,新增一个music类
在资源方案管理器MusicStore下,右击Models目录=》添加=》类=》命名“MusicModel”,编辑这个C#文件代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace MusicStore.Models
{
public class MusicModel
{
public int Id{ get; set; } //这一行必须,主键
public String Name { get; set; }
public String Album { get; set; }
public String Artist { get; set; }
}
}
重要:右击“MusicStore”项目,重新生成!
第三步:新建基架的Controller
右击Controllers目录,添加=》控制器:

选择最后一个(如图),点击添加按钮。

如上图修改,模型下拉选择刚才的MusicModel类,而数据上下文最好新建一个,点击右侧按钮如下:

命名为MusicDB=》添加=》添加
完成后会发现Views/MusicManage会多了CRUD操作的视图文件,同时在Controller中自动生成了对应的方法,运行一下代码
浏览器地址后面添加类地址:”/MusicManage/“默认会跑主页去
(在这里,如果提示数据库无法连接,请先查看web.config文件的配置信息,连接字符窜修改成当前系统中可用的数据库,我修改的是LocalDB\v11.0)
整个页面空空如也,因为没有数据,我们点击左上create new创建一条数据,可以看到对应的edit,delete,detail
说明整个crud操作都实现了,并且每一条数据都是model映射,遵从MusicModel属性
这就是强大的基架功能!
原理:ASP.NET MVC中的基架可以为应用程序创建,读取,更新和删除(CRUD)功能生成所需的样板代码。基架模板检测模型类的定义,然后生成控制器以及与该控制器关联的视图,有些情况下还会生成数据访问类。基架知道如何命名控制器、命名视图以及每个组件需要执行什么代码,也知道在应用程序中如何放置这些项以使应用程序正常工作。
利用基架可以为应用程序开发节约时间。基架只有在允许运行的时候才会运行,所以不必担心代码生成器会覆盖对输出文件的修改。
介绍常用的基架模板:
1.MVC5 Controller——Empty
添加一个指定控制器,自带Index,无视图生成。
2.MVC5 Controller with read/write Actions
添加一个指定控制器,自带Index,details,create,edit和delete,无视图。
3.Web API2 API Controller Scaffolders
用于Web API以后再来唠叨
4.MVC5 Controller with Views,Using Entity Framework
这个最牛逼,生成一个完整的CRUD应用。
关于这个如何使用:第一步需要为基架提供一个模型类(可以先写一个数据模型Model),基架会检查选取数据模型的所有属性,然后利用这些信息来创建控制器,视图和数据访问代码。
为了生成数据访问,还需要一个数据上下文对象的名称。可以指定一个数据上下文也可以新建一个。
什么是数据上下文?
要说明这个问题,必须先了解实体框架。
Entity Framework(实体框架)用于数据库关系对象映射可以明确如何把.NET对象存入数据库,以及使用LINQ语句操作数据库。
EF支持数据库优先,模型优先,以及代码优先,MVC基架采用了代码优先的机制
代码优先:在不创建数据库对象前,向sql server中存储或检索信息。
什么是数据库上下文文件,请看刚刚我们新建的MusicDB这个就是数据库上下文文件,查看vs2015为我们生成的上下文:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web; namespace MusicStore.Models
{
public class MusicDB : DbContext
{
public MusicDB() : base("name=MusicDB")
{
} public System.Data.Entity.DbSet MusicModels { get; set; }
}
}
这个MusicDB继承自DbContext实体框架
学习《ASP.NET MVC5高级编程》——基架的更多相关文章
- ASP.NET MVC5 高级编程 第5章 表单和HTML辅助方法
参考资料<ASP.NET MVC5 高级编程>第5版 第5章 表单和HTML辅助方法 5.1 表单的使用 5.1.1 action 和 method 特性 默认情况下,表单发送的是 HTT ...
- ASP.NET MVC5 高级编程 第3章 视图
参考资料<ASP.NET MVC5 高级编程>第5版 第3章 视图 3.1 视图的作用 视图的职责是向用户提供界面. 不像基于文件的框架,ASP.NET Web Forms 和PHP ,视 ...
- ASP.NET MVC5 高级编程 第2章 控制器
参考资料<ASP.NET MVC5 高级编程>第5版 第2章 控制器 控制器:响应用户的HTTP 请求,并将处理的信息返回给浏览器. 2.1 ASP.NET MVC 简介 MVC 模式中的 ...
- ASP.NET MVC5高级编程 之 模型
1. 为MVC Music Store建模 Models文件夹(右击) --> 添加 --> 类 为类添加对应的属性: public class Album { public virtua ...
- ASP.NET MVC5 高级编程-学习日记-第一章 入门
1.1 ASP.NET MVC 简介 ASP.NET是一种构建Web应用程序的框架,它将一般的MVC(Model-View-Controller)模式应用于ASP.NET框架. 1.1.1 MVC模式 ...
- ASP.NET MVC5高级编程 之 视图
1.1理解视图约定 当创建一个项目模版时,可以注意到,项目以一种非常具体的方式包含了一个结构化的Views目录.在每一个控制器的View文件夹中,每一个操作方法都有一个同名的视图文件与其对应.这就提供 ...
- ASP.NET MVC5 高级编程-学习日记-第二章 控制器
2.1 控制器的角色 MVC模式中的控制器(Controller)主要负责响应用户的输入,冰球在响应时修改模型(Model).通过这种方式,MVC模式中的控制器主要关注的是应用程序流.输入数据的处理, ...
- ASP.NET MVC5 高级编程-学习日记-第三章 视图
开发人员之所以花费大量时间来重点设计控制器和模型对象,是因为在这些领域中,精心编写的整洁代码是开发一个可维护Web应用程序的基础. 3.1 视图的作用 视图的职责是向用户提供用户界面.当控制器针对被请 ...
- ASP.NET MVC5高级编程 之 Ajax
jQuery不仅支持所有现代浏览器,包括IE.Firefox.Safari.Opera和Chrome等,还可以在编写代码和浏览器API冲突时隐藏不一致性(和错误). 1. jQuery jQuery擅 ...
随机推荐
- Spring Data JPA,一种动态条件查询的写法
我们在使用SpringData JPA框架时,进行条件查询,如果是固定条件的查询,我们可以使用符合框架规则的自定义方法以及@Query注解实现. 如果是查询条件是动态的,框架也提供了查询接口. Jpa ...
- 双系统删除Ubuntu后出现grub界面而无法正常启动Windows系统的解决方法
第一次安装双系统的时候由于不怎么会弄,设置了ubuntu引导windows,这种方法是非常不推荐的,因为当ubuntu出现问题或者是当你不再使用ubuntu的时候,删除ubuntu就会成为一个很麻烦的 ...
- JavaScript 动态添加div 绑定点击事件
1.动态添加div function cDiv(num){ var oDiv=document.createElement("div"); oDiv.className='divs ...
- 【转】Lucene.NET详细使用与优化详解
1 lucene简介1.1 什么是luceneLucene是一个全文搜索框架,而不是应用产品.因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工 ...
- UML软件方法大纲
利用周末的时间读了潘加宇的<软件方法(上)>,希望梳理清楚UML的知识脉络: 工作流 子流程 内容 备注 建模和uml 利润=需求-设计 愿景 缺乏清晰.共享的愿景往往是项目失 ...
- dreamweaver中的 map怎么调用?_制作热点图像区域
我们浏览网页时,经常看到一些图片上会出现特别的超链接,即在一张图片上有多个局部区域和不同的网页链接,比如地图链接. 这就是映射图像(Image Map),它是指一幅根据链接对象不同而被人为划分为若干指 ...
- Javascript——依赖注入
本人才学疏浅,本文只为抛砖引玉,欢迎各路大牛前来斧正,不胜感激! 如今各个框架都在模块化,连前端的javascript也不例外.每个模块负责一定的功能,模块与模块之间又有相互依赖,那么问题来了:jav ...
- 关于php的flush在本机正常在服务器不灵的问题
这个问题网上很多,我就不重复那些了. 我的是关于进度条的应用.我最后遇到的问题是,在本机swampserver环境下的输出缓存很快,但是到了服务器上就是一段一段的了.我的服务器是Web服务器是IIS. ...
- https单向认证和双向认证区别
关于证书 1.每个人都可以使用一些证书生成工具为自己的站点生成证书(比如jdk的keytool),大家称它为“自签名证书”,但是自己生成的证书是不被互联网承认的,所以浏览器会报安全提示,要求你手动安装 ...
- (转)Uploadify 3.2 参数属性、事件、方法函数详解
转自http://blog.sina.com.cn/s/blog_5079086b0101fkmh.html Hallelujah博客 一.属性 属性名称 默认值 说明 auto true 设置为tr ...