MVC3学习笔记杂谈

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更难
先把影响大的、成本也低的优化了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值