MVC(1)

 

1 捆绑系统可以使得脚本库不绑定到具体版本号,实现自动更新。

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-{version}.js"));
 @Scripts.Render("~/bundles/jquery")

2 HTML编码的用户输入 防止XSS 脚本攻击

public string Browse(string genre)
{
 string message=
 HttpUtility.HtmlEncode("Genre= "+genre);
return message;//利用方法HttpUtility.HtmlEncode来预处理用户输入的值
}

3 MVC 根据默认路由{controller}/{action}/{id} 带有名为id的参数 不用加查询字符串参数也可以传参

//Get:/Store/Details/5
public string Details(int id)
{
 string message="ID= "+id;
 return message;
}

4 视图本身不会被直接访问,浏览器不能直接指向一个试图渲染它。相反,视图总是被控制器渲染,因为控制器为它提供渲染的数据。

5 ViewBag和ViewData ViewBag.Message属性传值 ViewData使用字典方式传值  ViewBag是ViewData的动态封装器  但二者语法不存在技术的差异  只是Message方式更被人们所接受。

二者仍有关键差异。第一点,只有当要访问的关键字是一个有效的c#标识符,ViewBag才起作用。例如如果关键字View["  Bag"]带有空格或者特殊字符ViewBag就无法起作用,编译不会通过。

第二点,动态值不能作为参数传递给扩展方法@Html.TextBox("name",ViewBag.Name) 这里就是动态的,要么使用ViewData 要么string(ViewBag.Name)变成具体类型。

6 View中 强类型视图  

Controller
public ActoinResult List(){
var albums=new List<Album>();
for (int i=0;i<10;i++)
{
  albums.Add(new Album{title=“Album”+i});
}
return View(albums);
}

View
1.使用完全限定类型
@model IEnumerable<MVCDemo.Models.Album>
2.@using 声明
@using MVCDemo.Models

7

 

上一篇:【Asp.net】MVC中ViewBag、ViewData和TempData的区别与实例


下一篇:MVC 向页面传值方式总结(1)