MVC分工
Model : 模型(实体)
View :视图
Controller : 控制器
Controller给view传值的方式
1.可以通过viewdata["属性名"]
2.可以通过viewbag.属性名
3.使用tempdata传值
4.可以通过实体来传值
(注:在view中,实体分为弱实体和强实体,为了系统的健壮性,我们一般使用强实体来传值)
他们的区别:
从上图就可以看出来,viewdata和viewbag是相通的,其实viewbag本质上就是viewdata,但是他们的类型不一样,一个是动态类型(dynamic),一个的字典类型(键值对类型)
TempData保存的数据是存储在session中,controller每次请求时都是从session中提取到tempdata()中,然后清楚session。也就是tempdata是一次性的,每次访问完之后都会清除。
viewdata和viewbag如何调用:
controller端:
view端:
view代码格式
Razor语法:
1. @后边的都是C#语法
2. @直接写变量,就会在界面输出变量
3. @:后边是HTML代码
<text>里边的内容不会加入<text>标签
4.不想输出HTMLencode就用@html.Row开头
5.一个对象的属性值如果是false就不输出这个属性,如果是true就输出
拓展
dynamic动态类型
优点:灵活
缺点:性能比较低,而且编译的时候不容发现错误
ExpandObject动态类型
实例化方法:dynamic test = new System.Dynamic.ExpandObject();
var类型,编译器会把你定义的变量编译成合适的类型,也可以用于创建临时对象
例如:var test =new {name=“Eric”,age=“12”}
注意:此方法创建的对象,属性值只能取值,不能赋值。