7/6
IIS Express 7.5
轻量级
不需要管理员账号
高性能
谷歌浏览器:建议装一下FireBug组件
文本编辑器
NoetPad2,只有一个exe文件,可以修改注册表改掉记事本打开。
NotePad++有录制功能,小红点录制。
到下一行的时候按一下home键
Ruler屏幕尺子
http://ruler.codeplex.com
Asp.net开发中心
http://msdn.microsoft.com/zh-cn/asp.net/aa336522
渲染输出
经过html编码可以防止xxs攻击
<span><%:model.message%></sapn>
等价于:
<span>@model.message</span>
未经过html编码
<span><%=model.message%></span>
等价于:
<span>@html.Row(model.message)</span>
代码和标记混合
<%foreach(var item in items){%>
<span><%:item.prop%></span>
<%}%>
等价于:
@foreach(var item in items){
<span>@item.prop</span>
}
代码于纯文本混合:
<%if(foo){%>
plain text
<%}%>
等价于:
//①
@if(foo){
<text>plain text</text>
}
//② @if(foo){ @:plain text }
表达式与文本混合
Hello<%:title%>.<%:name%>(这里为什么不能代码化?@CSDN)
等价于:
Hello@titel.@name
显示渲染输出:
<span>IsBN@(isbnNuber)</span>
后台isbnNumber=2,则输出IsBn2
创建Razor委托:
我们通过创建委托来复用一些视图逻辑
@{
Func<dynamic,object> b=
@<strong>@itme</trong>;
}
@b("Bold this")
渲染输出:
<strong>Bole this</stong>
7.7
–ViewStart文件
在项目的视图文件夹下添加一个名为ViewState.cshtml的文件
该文件用来定义想要每次视图呈现开始时执行的通用视图代码。
CSDN中文广播
<script src="@url.content("~/scripts/js")" type="text/javascript">
//这么写为了保证能够在根目录下找到
Action通过(ViewData,Model)把数据传递到View视图中
[HttpPost]
public ActionResult Test()
{
return View();
}
//如果在地址栏上直接get请求,则会报404错误。可以通过[HttpPost][HttpGet]区分不同请求动作的同名Action
7.8
Routing
,{Controller}/{action}/{id}
,new{controller="Home",action="Index",id="..."}
,new[] {"命名空间"}//z这里是个数组是为了可以放多个命名空间。
Mvc Global.cs文件中
protected void Appliction_Statr()
{
//这里可以注册全局过滤器
}
实例:
[Authorize]//这个验证要求必须登录这么一个过滤规则
public ActionResult ChangePassword()
{
return view();
}
MVC框架本身并不关心数据的存储系统,并通过一些额外的帮助类和model绑定机制简化了Model的使用。
具备自绑定机制,具备自验证机制。
Mvc客户端验证
引用jquery.Validate.min.js和jQuery.Validate.unobtrusive.min.js
在view添加
@{html.Enableclientvalidation();}
//这个会根据jQuery给页面上的一些标签自动生成验证。
MVc远程验证
–在model中使用跟RequiredAttribute相似
–[Remodel(“验证的Action名”,”控制器名”,ErrorMessage=(“远程验证未通过的错误消息”))]
远程验证必须是HttpPost的,post提交返回的是jsonResult,不是布尔值
Model
public class RegisterModel
{
[Required]//必填
[Display(name="userName")]
[remote("UserVali","Test",ErrorMessage="用户名已存在")]
//远程验证(Action,Coller)
}
Repository模式
将数据的CRUD操作封装到Repository中,业务逻辑/数据验证封装到Service中,Controller调用Repository和Service
PRG模式:用来确保修改数据只发生一次
Post
Redirect(修改)
Get
保持视图中的代码最小化
–视图中不要含有数据处理的业务逻辑代码
–视图中要避免包含大的代码块
–构建多个局部视图
–适当使用@Herlper和@function语法
少用@ViewData[“Message”]//这个会有性能影响,这个是弱类型,可能会用到反射之类。
视图中尽可能写HTML代码
–尽可能写纯的HTML代码
–不要为了隐藏HTML而故意自定义Html.Submite之类的helper
–尽可能不适用webForm控件做视图代码
客户端优化
–http要求次数
–下载所使用的宽带
(上面两个:比如两个css文件可以整合到一个,在压缩css,这样可以提高速度,又比如十个ico图标可以放在一张图片上)
–DNS查询的时间长短(电信、联通、网通三网互访速度是比较慢的,可以是使用智能DNS,让教育网络访问教育网的服务器,电信网络访问电信的服务器。也可以再各地部署服务器,让广西的访问广西的服务器)
服务端优化
–IIS
–控制客户端(告诉客户端这一块是可以缓存到客户端的,不经常改变的页面)
–Http Cache control
–控制服务器端
–将输出缓存(output Caching)
–提升数据查询速度
–ASP.net MVC
–调用性能改善
–适当的缓存策略:缓存应该缓存的数据,而不是所有的数据
开始不要考虑装箱、拆箱、反射带来的效率低下,等你把数据库、缓存都提高之后再说这些细节。
5s提升到1s很容易,1s到0.1s很难,0.1s到0.01s更难
先把影响大的、成本也低的优化了。