首页 > 代码库 > MVC 笔记(二)

MVC 笔记(二)

HttpUtility.HtmlEncode来预处理用户输入,这能阻止用户向视图中用链接注入js代码或html标记
1、[Required]:非空验证
2、[StringLength(**)]:设置字符的长度
2.1、[StringLength(**,MinimumLength=*):设置字符长度MinimumLength:设置最短长度
3、[RegularExperssion(@"正则表达式")]:正则验证
4、[Range(,)]:Range特性用来指定数值类型值的最小值和最大值,Range特性可用于int类型和double类型,它还有一个重载Range(Typeof(decimal),"0.0","49.99"]
二。验证特性;
2.1[Remote("CheckUserName","Account")]:指定了执行此验证所需要调用的Action方法,
以及此Action所在的Controller。前面是action后面是controller
2.2[Compare("验证类型")]:用于确保模型对象的两个属性拥有相同的值


2.3要对表单进行验证时得把submit放在表单内
三:ViewData,TempData,ViewBag
ViewData 和 TempData 都可以传递弱类型数据,区别如下:

ViewData 只在当前 Action 中有效,生命周期和 View 相同;

TempData 的数据至多只能经过一次Controller传递,并且每个元素至多只能被访问一次,访问以后,自动被删除。

TempData 一般用于临时的缓存内容或抛出错误页面时传递错误信息,可以将TempData 在使用之前存储到相应的 ViewData 中以备循环使用。
TempData 可以跨页面传值

ViewBag和ViewData生命周期相同,也是对但前View有效,不同的是ViewBag的类型不再是字典的键值对结构,而是dynamic动态类型,属于MVC3里面新增的部分。

四:
Controller中的public的方法都被当作是Action方法。

五:@ajax.ActionResult
使用@ajax.ActionResult时应该先引用<script src="http://www.mamicode.com/~/Scripts/jquery.unobtrusive-ajax.js"></script>文件

六: @Html.Partial("_LogOnPartial"):相当于用户控件,引用名为“_LogOnPartial”的用户控件

A.Layout属性:等同于原来的MasterPageFile属性.

B.@RenderBody()方法:直接渲染整个View到占位符处,而不需要原来所使用的<asp:Content />.

C.@RenderPage()方法:渲染指定的页面到占位符处.

D.@RenderSection方法:声明一个占位符,和原来的<asp:ContentPlaceHolder />功能类似.

E.@section标记:对@RenderSection方法声明的占位符进行实现,和原来的<asp:Content />功能类似.

 

URL:"controll"/"Action"
RenderAction:"Action"/"Controll"


Html.RenderPartial与Html.RenderAction这两个方法都是用来在界面上嵌入用户控件的。

@Html.RenderPartial("用户控件名")//必须放在调用者同一目录下,也可以放在View/Shared中
@Html.RenderAction("Action","Control");//


@Html.ActionLink("名字","Action","Controll","参数","属性名")

 


六:路由
在这里提及一下string[] namespaces参数.~
当在你的MVC3应用程序里建立了不是以Controllers结尾的控制器类命名空间时,就可以通过设置这个属性来让路由系统在url匹配时应该去找那些命名空间
routes.MapRoute("namespaces",
"{controller}/{action}",
null, null,
new string[] { "MvcApplication1.Custom" }
);

设置后此参数后路由系统就会去找
MvcApplication1.Controllers, MvcApplication1.Custom下带Controller结尾的继承于Controller的类了!

⑦:URL重写的例子
"{controller}.{action}/{id}", // 带有参数的 URL//URL格式为http://localhost:2741/home.Index

在url重写中的参数必须和路由中定义的参数一致比如要传{productName}-{id}//页面用的时候传的也是要new{productName="xx",id="xx"}

 

FormCollection:可以获取表单传过来的值(不推荐使用)具体参照《使用FormCollection的陷阱》
///例
public ActionResult Index(FormCollection collection)
{
string name = collection["name"];

return View();
}

 

 

 

七、CodeFrist
配置文件的名字name必须和继承DbContext的类的名字相同,程序运行起来才会自动去找到配置文件的连接字符串(反射。。。。。对命名空间要求很严格)

 

AsNoTracking:返回一个新的查询返回的实体将不会被缓存在DbContext或ObjectContext的。

 

Database.SetInitializer<DbEntities>(null);//不重新设置数据库