MVC学习笔记
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学习笔记的更多相关文章
- MVC学习笔记索引帖
[MVC学习笔记]1.项目结构搭建及单个类在各个层次中的实现 [MVC学习笔记]2.使用T4模板生成其他类的具体实现 [MVC学习笔记]3.使用Spring.Net应用IOC(依赖倒置) [MVC学习 ...
- ASP.NET MVC学习笔记-----Filter2
ASP.NET MVC学习笔记-----Filter(2) 接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用 ...
- ASP.NET MVC学习笔记-----Filter
ASP.NET MVC学习笔记-----Filter(1) Filter类型 接口 MVC的默认实现 Description Authorization IAuthorizationFilter Au ...
- Spring MVC 学习笔记一 HelloWorld
Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行(使用Eclipse): 加入JAR包 在web.xml中配置DispatcherServlet ...
- .NET MVC 学习笔记(一)— 新建MVC工程
一..NET MVC 学习笔记(一)—— 新建MVC工程 接触MVC有段时间了,一直想找机会整理一下,可是限于文笔太差,所以一直迟迟羞于下手,想到最近做过的MVC项目也有一些了,花点时间整理一下方便以 ...
- Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建
Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...
- Spring MVC 学习笔记11 —— 后端返回json格式数据
Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...
- Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息
</pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...
- Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息
Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...
- Spring MVC 学习笔记8 —— 实现简单的用户管理(4)用户登录
Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; &g ...
随机推荐
- 基本排序(二)插入排序(直接插入、Shell、折半)
插入排序是常见的内部排序之一.常见的插入排序包括直接插入排序.Shell排序.折半排序.本篇主要介绍这三个排序. 转载请注明出处——http://www.cnblogs.com/zrtqsk/p/38 ...
- JAVA面向对象-多态的理解
面向对象编程有三个特征,即封装.继承和多态. 封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据. 继承是为了重用父类代码,同时为实现多态性作准备.那么什么是多 ...
- 【Python】[面向对象编程] 访问限制,继承和多态
1.在Python中两个下划线__ 就是带便私有属性 private 注意已两个下划线开头并且结尾的 如 __init__ 是特殊变量,不是私有变量 2.多态,Python的“file-like ...
- Sqlserver 语法总结
修改列类型 alter table PRO_Element_b alter column matname varchar(1024) 更改一个表中的数据到另外一个表中 update a set a.n ...
- MongoDB基础知识
一.Mongodb简介 Mongodb是基于分布式文件存储的数据库,用C++编写: Mongodb是nosql(not-only-sql)数据库: Mongodb '无状态模式',不用去设计,直接用, ...
- Model-View-ViewModel for iOS [译]
如果你已经开发一段时间的iOS应用,你一定听说过Model-View-Controller, 即MVC.MVC是构建iOS app的标准模式.然而,最近我已经越来越厌倦MVC的一些缺点.在本文,我将重 ...
- c#.NET微信自定义菜单
private void customMenu() { //获取access_token string access_token = GetAccessToken(); StringBuilder s ...
- Windows 新装进阶操作指南
Windows禁用CTRL+Space切换输入法 注册表打开HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000010 把Key Mo ...
- Linux下因为系统编码问题造成乱码的解决办法
2016年12月13日18:34:32 -------------------------------- 最近一段时间遇到一些润乾报表的应用在linux系统下面乱码的问题,最后检查后都发现是客户的li ...
- MVC前后端数据被编码
@{ ViewBag.Title = "Home Page";}<script> function htmldecode(s) { console.log(s); va ...