MVC5学习笔记】的更多相关文章

由于之前在项目中也使用MVC进行开发,但是具体是那个版本就不是很清楚了,但是我觉得大体的思想是相同的,只是版本高的在版本低的基础上增加了一些更加方便操作的东西.下面是我学习ASP.NET MVC5高级编程(5)的一些知识笔记,有些简单的操作没有进行记录,一些知识点就使用思维导图来写出大体的知识架构. MVC5是完全Bin部署的,也就是说我们最后发布的时候只是将Bin文件下面的应用程序的程序集发布就可以,对于服务器来说只需要有.NET 4.5就可以进行安装了. 一条至理名言"约定优于配置"…
新装了vs2013 开始试着学习MVC5 首先用了2013的内置的框架 这里提三点 1. bootstrap (现已加入mvc5豪华套餐) 他的框架已经加入了bootstrap 3.0的版本(http://v3.bootcss.com/) 很强大的前端框架 大爱啊 像我这种没有美术天赋的懒人 用用bootstrap再好不过了 2. BundleConfig 所有的外链的文件 都放在这里 随着web的发展 网上出现了很多开源工具 框架 UI 之前说的bootstrap就是其中 然后这需要大量的连接…
前面我们介绍了Filter的基本使用,但各种Filter要在合适的时机运行起来,需要预先准备好,现在看看ASP.NET MVC框架是怎么做的. 一.Filter集合 在ControlerActionInvoker的InvokeAction方法中,只有一行代码FilterInfo filterInfo = GetFilters(controllerContext, actionDescriptor), 把收集的Filter信息放到了FilterInfo中,我们来看看 访类型的定义: public…
Filter是ASP.NET MVC框架提供的基于AOP(面向方面)设计,提供在Action执行前后做一些非业务逻辑通用处理,如用户验证,缓存等.现在来看看Filter相关的一些类型信息. 一.基本类型 1. Filter类型,描述筛选器信息的元数据类型,具体定义如下: public class Filter { // 表示一个用于指定筛选器的默认顺序的常数. ; public Filter(object instance, FilterScope scope, int? order); pub…
在开始之前,声明一下,由于ASP.NET MVC5正式发布了,后面的分析将基于ASP.NET MVC5最新的源代码.在前面的内容我们分析了怎样根据路由信息来确定Controller的类型,并最终生成Controller的实例.这一节来了解一下Controller的总体执行分析,以同步执行版本为主. Controller的继承体系如下图所示: 当调用Controller实例的Excecute方法时,实际是调用ControllerBase的Excecute方法,该方法的主要实现代码如下: prote…
买了一本MVC5的书:ASP.NET MVC 5 高级编程(第5版).边学边记录一下 1.快速创建模型类,如:自动实现的属性 {get;set;} 输入“prop",按Tab两次,默认属性值是int,可以修改. 然后再按Tab两次,修改属性名称,最后按Enter. 2.编译解决方案的快捷方式:Ctrl+Shift+B…
1. Razor @*注释*@ 你在用 @Request.Browser.Browser, 发送邮件给support@qq.com, 转义@@qq @{ var amounts = new List<Decimal> {100, 25.00m, 30.0m, -40}; } <ul> @foreach (decimal amount in amounts) { <li>@formatAmount(amount)</li> <text>普通文本&l…
[TOC] 1. Action 1.1 新建项目 新建项目->Web->Asp.net Web应用程序,选择MVC,选择添加测试. 在解决方案上右键,选择"管理NuGet程序包",在更新页更新全部程序包. 1.2 控制器 控制器在Controllers文件夹内,命名规则是"名称+Controller" 2. 路由 2.1 路由规则 {controller}/{action}/{id} 其中{id}是可选的. 2.2 路由定义RouteConfig.cs…
主要参考书籍<ASP.NET MVC5 高级编程(第5版) > 作者:Jon Galloway等 1. MVC 表示 模型-视图-控制器.MVC是一种用于开发应用程序的模式,具备良好的架构,可测试和易于维护.基于MVC应用程序中包含: Models:表示应用程序的数据,并使用验证逻辑强制执行业务规则的数据的类. Views:您的应用程序用来动态生成HTML响应的模板文件. controllers:处理传入的请求的浏览器,类检索模型的数据,然后指定将响应返回到浏览器中的视图模板. 2.  MVC…
Html.ActionLink("linkText","actionName") 该重载的第一个参数是该链接要显示的文字,第二个参数是对应的控制器的方法,默认控制器为当前页面的控制器, 如果当前页面的控制器为Products,则 Html.ActionLink("detail","Detail") 则会生成 <a href="/Products/Detail">all</a> Htm…
一. 元数据描述类型ModelMetadata 模型元数据是对Model的描述信息,在ASP.NET MVC框架中有非常重要的作用,在模型绑定,模型验证,模型呈现等许多地方都有它的身影.描述Model元数据的基本类型是ModelMetadata,日常开发中我们建立的ViewModel,在上面的声明的许多属性最终都会反应的该类型上,它的具体定义如下: public class ModelMetadata { // 摘要: // 默认顺序值 10000. ; // 摘要: // 初始化 System…
这一节我们关注模型绑定的值提供体系,先来介绍几个重要的接口 一. IValueProvider,接口定义如下: public interface IValueProvider { bool ContainsPrefix(string prefix); ValueProviderResult GetValue(string key); } 从上面可以看出,IValueProvider定义了两个方法, 一个是检测是否包含指定的前缀,一个是通过指定的Key获取查询结果.这里前缀的概念主要是针对复杂类型…
当我们在Controller中定义一个Action,通常会定义一个或多个参数,每个参数称为一个模型,ASP.NET MVC框架提供了一种机制称为模型绑定,会尝试自动从请求的信息中实例化每一个模型并赋值.这其中又涉及模型的元数据提供和模型的验证. 我们不妨试想一下,如果来定义一种从字符串值到对象值的映射机制,可能要知道以下信息: 1. 对象的类型和名称等对象本身的元数据 2. 对象属性的元数据信息 3. 查询字符串到对象和对象属性的值映射机制 4. 具体的绑定过程 前面的1,2 由ASP.NET…
一. ControllerDescriptor说明 ControllerDescriptor是一个抽象类,它定义的接口代码如下: public abstract class ControllerDescriptor : ICustomAttributeProvider, IUniquelyIdentifiable { public abstract ActionDescriptor FindAction(ControllerContext controllerContext, string ac…
去除VS Browser Link废代码 在webconfig中添加 <configuration> <appSettings> <add key="vs:EnabledBrowserLink" value="false"/> ... </appSettings> </configuration> BundleConfig bundles.Add(new ScriptBundle("~/bundl…
1. 测试步骤 准备 执行 检查 2. 创建单元测试 注意:单元测试不要包含数据库操作,包含数据库操作的一般成为集成测试. 2.1 编写测试代码 namespace AspNetMVCEssential.Tests.Controllers { [TestClass] public class HomeControllerTest { [TestMethod] public void Index() { // Arrange HomeController controller = new Home…
1. Owin OWIN全名:Open Web Interface for .NET. 它是一个说明,而非一个框架,该声明用来实现Web服务器和框架的松耦合.它提供了模块化.轻量级和便携的设计.类似Node.js, WSGI. Katana是微软实现的OWIN组件的集合.包含基础设施组件和功能性组件.并且暴露出了OWIN管道用来添加组件.可以在IIS.OwinHost.exe或者自定义的服务器中托管. 比如OWIN提供了新的登录模式,比如,打开Web.config文件,我们看到: <system…
1. Model 1.1 添加一个模型 注意,添加属性时可以输入"prop",会自动输入代码段. public class CheckoutAccount { public int Id { get; set; } public string AccountNumber { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Balanc…
控制器(controller)主要负责响应用户的输入,并且在响应时修改模型(Model).通过这种方式,MVC模式中的控制器主要关注的是应用程序流.输入数据的处理,以及对相关视图(View)输出数据的提供.控制器操作的工作是响应URL请求,执行正确的操作,并向浏览器或是单击这个URL的用户做出响应,可以把它当作“指挥员”. 利用HttpUtility.HtmlDecode()方法来预处理用户输入.这样就能阻止用户用链接向视图中注入JS代码或html标记. Asp.net MVC的默认路由约定,就…
// POST: Movies/Create // 为了防止“过多发布”攻击,请启用要绑定到的特定属性,有关 // 详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] publicActionResultCreate([Bind(Include="ID,Title,ReleaseDate,Genre,Price")]Movie movie) { if(…
个人从传统的CS应用开发(WPF)开始转向BS架构应用开发: 先是采用了最容易上手也是最容易搞不清楚状况的WebForm方式入手:到后面就直接抛弃了服务器控件的开发方式,转而采用 普通页面+Ajax+一般处理程序的方式: 虽然能快速开发一些小项目应用,但整体架构不可靠.代码冗余.操作界面不友好等等问题还是让我重新考虑应该认真系统的学习一个开发架构框架: 由于个人一直从C语言学习上来的,也没有碰过Java,所以自然而然的就只有选择 ASP.NET MVC这个开发框架:(也许在完成MVC的学习后,也…
作者:ssslinppp      时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MVC与json参考文章:[spring学习笔记-mvc-3]返回json数据-方式1  和 [spring学习笔记-mvc-4]返回json数据-方式2. 使用到的技术主要如下: Ajax:使用JQuery 提供的ajax:==>需要引入jquery.min.js文件: Spring MVC: Jso…
学习总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上篇链接:EF学习笔记(十一):实施继承 本篇原文链接:Advanced Entity Framework Scenarios 本篇主要讲一些使用Code First建立ASP.NET WEB应用的时候除了基础的方式以外的一些扩展方式方法: 1.Performing Raw SQL Queries (执行真正的SQL语句) 2.Performing no-tracking queries (执行无跟踪的SQL语句) 3…
学习总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上篇链接:EF学习笔记(十) 处理并发 本篇原文链接:Implementing Inheritance 面向对象的世界里,继承可以很好的重用代码.在本章就对Instructor和Student两个类进行实施继承处理,这两个类有公用的属性,比如LastName等,也有私有的属性: 可以不用增加任何页面,进行修改一些代码,这些修改后的继承关系就会自动反应到数据库中. 通过下图可以看到两个类有哪些公用属性: 那么就可以建一个…
总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上一篇:EF学习笔记(九):异步处理和存储过程 本篇原文链接:Handling Concurrency Concurrency Conflicts 并发冲突 发生并发冲突很简单,一个用户点开一条数据进行编辑,另外一个用户同时也点开这条数据进行编辑,那么如果不处理并发的话,谁后提交修改保存的,谁的数据就会被记录,而前一个就被覆盖了: 如果在一些特定的应用中,这种并发冲突可以被接受的话,那么就不用花力气去特意处理并发:毕竟处理…
总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上一篇:EF学习笔记(八):更新关联数据 本篇原文:Async and Stored Procedures 为何要采用异步? 一个Web服务器肯定有可用线程的限制,那么在一些访问量特别大的情况下,线程肯定会消耗完:这个时候服务器肯定处理不了请求,必须等线程里处理结束才可以处理请求: 在非异步的时候,很多线程都处于等待状态,并不是一直在工作,而是在等类似于I/O等处理结束: 采用异步的时候,当一个处理在等待I/O处理结束的时…
学习笔记主目录链接:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上一篇链接:EF学习笔记(七):读取关联数据 本篇原文链接:Updating Related Data 本篇主要考虑对于有关联的数据进行新增.删除.更新操作:比如Course .Instructor: 对于Course来说,新增时候必须定义属于哪个Department,所以在新增.更新操作的时候,必须要用户选择Department: MVC5在选择基础控制器及视图框架的时候,如果选择EF的操作框架,则会自动带一…
总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 本篇参考原文链接:Reading Related Data 本章主要讲述加载显示关联数据: 数据加载分为以下三种 Lazy loading 这种加载方式在于需要用到这个导航属性数据的时候,才会去数据库取数据,如下图,循环中,每一次都去数据库取一次数据: Eager loading 这种加载方式则是先定义好哪个导航属性数据需要一起加载(通过是.Inclue),然后在加载主数据的时候,一并把导航数据全部加载,如下图: Expl…
上一篇链接:EF学习笔记(七):读取关联数据 本篇原文链接:Updating Related Data 本篇主要考虑对于有关联的数据进行新增.删除.更新操作:比如Course .Instructor: 对于Course来说,新增时候必须定义属于哪个Department,所以在新增.更新操作的时候,必须要用户选择Department: MVC5在选择基础控制器及视图框架的时候,如果选择EF的操作框架,则会自动带一部分基础代码,比如Course的Create\Edit直接就带上了Department…
EF6学习笔记总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 本篇原文地址:Creating a More Complex Data Model 本篇讲的比较碎,很多内容本人认为并不是EF的内容,既然原文讲了,那就按照原文来学习吧... 第1步:通过属性来定制化数据模型 通过 DataType Attribute来定义数据模型字段属性: 先加申明 using System.ComponentModel.DataAnnotations; 然后为需要定义属性的字段加上属性:…