7 天玩转 ASP.NET MVC 阅读笔记

1、Web Form的问题

  1、响应慢,web控件转化成html需要时间

  2、带宽消耗,页面保存web控件的状态(viewstate)

  3、由web控件生成的html难以精确控制

  3、代码难以复用,无法自动化测试,因为继承自page的类不能实例化

  折中的解决方式:1、摒弃web控件,直接书写html

          2、设置页面EnableViewState为false,ViewStateMode为disabled,禁用viewstate

          3、拆分可复用的代码放在单独的类中

2、MVC数据在Controller与View之间的传递方式:

  1、弱类型 使用ViewData或ViewBag(参见方法TestDataBinding1)

  2、强类型 使用model的方式(参见方法TestDataBinding2)

3、在View与Model之间还定义了ViewModel层,该层面向View,目的是剥离View中的业务逻辑,解耦View与Model(参见方法TestDataBinding2或TestDataBinding3)

4、form表单(参见方法TestForm)

  1、点击提交按钮(submit),页面调转到action属性所指页面,即在当前页面刷新,类型超链接<a>

    另外,注意submit点击事件(onclick)的行为

    代码:<input type="submit" name="btnSave" value="Save Employee" onclick="return checkInput();"/>

function checkInput() {
    if (document.getElementById('salary').value == '') {
        alert('不能为空!')
        return false;
    }
    return true;
}

    当onclick返回为false时不会触发向服务器提交行为

  2、表单内所有输入控件自动发送(包括text、radio、checkbox、submit、select,但button不会),表单元素外的输入控件值不会提交

  3、post与get请求不同,get请求会将查询字符串添加到url中,导致get请求能够传输的数据量受限制,post请求无此问题,具体可以两则http请求包的不同

5、数据绑定的四种方式

  1、默认的Model Bind, 自动填充对象各属性(参见方法SaveEmployee1)

  2、默认的Model Bind, 自动填充方法各变量,注意:自动绑定在识别过程中是不区分大小写的,并且会进行类型转换(参见方法SaveEmployee2)

  3、自定义Model Bind,注意:Model Bind均不区分大小写(参见方法SaveEmployee3)

  4、从Request属性中直接提取查询字符串的值(参见方法SaveEmployee4)

6、服务器端验证

  1、向页面展示验证消息的跳转方法为View("AddNew"),而非RedirectToAction("AddNew")

  2、页面中展示错误消息的方法@Html.ValidationMessage("firstname")中的key不区分大小写

实例源码 Mvc4Test.rar

7、编码方式

  1、html中‘<’或‘>’表示标签,在页面中显示该符号而非解析为html标签,需要使用符号实体

  2、Razor对字符串进行html编码,意味着字符串中包含的html标签不会被解析;如果要作为htm解析,可以使用MvcHtmlString类型,该类型告诉Razor不要编码   

  代码:

    <br />
    @{
      string str = "<b>aaaa</b>";
     }
    @str
    <br />
    @MvcHtmlString.Create(str)

  以上输出分别为<b>aaaa</b>、aaaa(加粗)

权限管理Demo Mvc4Test_Authenticate.rar

8、分部视图与布局页(实现html代码重用)

实例Demo Mvc4Test_Layout.rar

9、http异步响应(使用c#异步函数sync、await)、异常处理、Routing

  注意事项:使用属性Route[]更改action的路由方式只有mvc5及以上支持

详情参考Day 6 实例源码Mvc4Test_Day6.rar

MVC学习笔记的更多相关文章

  1. MVC学习笔记索引帖

    [MVC学习笔记]1.项目结构搭建及单个类在各个层次中的实现 [MVC学习笔记]2.使用T4模板生成其他类的具体实现 [MVC学习笔记]3.使用Spring.Net应用IOC(依赖倒置) [MVC学习 ...

  2. ASP.NET MVC学习笔记-----Filter2

    ASP.NET MVC学习笔记-----Filter(2) 接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用 ...

  3. ASP.NET MVC学习笔记-----Filter

    ASP.NET MVC学习笔记-----Filter(1) Filter类型 接口 MVC的默认实现 Description Authorization IAuthorizationFilter Au ...

  4. Spring MVC 学习笔记一 HelloWorld

    Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行(使用Eclipse): 加入JAR包 在web.xml中配置DispatcherServlet ...

  5. .NET MVC 学习笔记(一)— 新建MVC工程

    一..NET MVC 学习笔记(一)—— 新建MVC工程 接触MVC有段时间了,一直想找机会整理一下,可是限于文笔太差,所以一直迟迟羞于下手,想到最近做过的MVC项目也有一些了,花点时间整理一下方便以 ...

  6. Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建

    Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...

  7. Spring MVC 学习笔记11 —— 后端返回json格式数据

    Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...

  8. Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息

    </pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...

  9. Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息

    Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...

  10. Spring MVC 学习笔记8 —— 实现简单的用户管理(4)用户登录

    Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; &g ...

随机推荐

  1. 再读《C++ Primer》——变量和基本类型

    刚上大学那时,几个室友一块买了本<C++ Primer>第4版,看了一遍后就没怎么碰了,偶尔拿出来翻翻,当作工具书使用.后来知道有第5版了,一直觉得内容差不多吧.直到最近,再读其中的一些内 ...

  2. Web 开发中很实用的10个效果

    在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...

  3. C/C++实践笔记 007

    进制输出自己写一个_itoa 进制转换void main(){ int num = 0; scanf("%d", &num); printf("num=%i&qu ...

  4. 初次尝试用Kotlin实现Android项目

    Kotlin: The Swift of Android 起这个文内标题的原因很简单,就是对Kotlin抱有希望--能使Android的开发更简洁.高效及安全.知道Kotlin是从简书的一篇短文,越来 ...

  5. Css-深入学习之单个颜色实现 hover 和 active 时的明暗变化效果

    本文是作者从别的网站和文章学习了解的知识,简单做了个笔记,想要学习更多的可以参考这里:[css进阶]伪元素的妙用--单标签之美,奇思妙想 (1.normal)(2.hover)(3.active) / ...

  6. python基础-函数式编程

    python基础-函数式编程  高阶函数:map , reduce ,filter,sorted 匿名函数:  lambda  1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层 ...

  7. 不可错过的javascript迷你库

    最近看着下自己的github star,把我吓坏了,手贱党,收藏癖的我都收藏了300+个仓库了,是时候整理一下了. Unix主张kiss,小而美被实践是最好用的,本文将介绍笔者收集的一些非常赞的开源库 ...

  8. 冰冻三尺非一日之寒--rabbitMQ,redis

    第11章 1.rabbitMQ   2. redis 一.rabbitMQ: 人们写了有好多好多的开源的MQ服务器.其中大多数都是写出来用来解决特定问题的.它们不关心上面跑的是什么类型的消息,设计思想 ...

  9. CTSC2016&&APIO2016滚粗记&&酱油记&&游记<del>(持续更新)</del>

    挖一波坑 #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs. ...

  10. VsFtpd配置文件详解

    1.默认配置:1>允许匿名用户和本地用户登陆.     anonymous_enable=YES     local_enable=YES2>匿名用户使用的登陆名为ftp或anonymou ...