MVC向页面传值
- 从控制器Controller开始向访问的页面cshtml传值:
在控制器的方法里定义值,
在该方法对应的视图板块取值
定义值的方法:
- ViewData,通过键值对的形式传值,赋值可以是任何类型;
通过键进行取值,取出的值往往需要做强制转换,取出来默认类型都是Object
向单个界面传值
ViewData["age"]=18;
ViewData["name"]="Vincy";
List<string> list = new List<string>() { "Monolithic", "Power", "Sysytem" };
ViewData["list"]=list;//把集合作为数据本身交给ViewData
- ViewBag, 为ViewBag定义一个名称,通过这个名称取值,一般取出的值不需要强制转换
取出的值类型默认是dynamic,活动类型,类似var
向单个界面传值
ViewBag.name = "vincy";
ViewBag.age = 18;
ViewBag.list = list;
- TempData,也使用键值对的方式传值,用键取值;
向单个界面,也可以跨页传值;注意,TempData被取出过,就会被释放掉
TempData["newname"] = "跨页传值";
取值:
@{
string name = ViewData["name"].ToString();
int age = Convert.ToInt32(ViewData["age"]);
List<string> list1 = ViewData["list"] as List<string>;
string name2 = ViewBag.name;
int age2 = ViewBag.age;
List<string> list2 = ViewBag.list;
}
<h1>viewdata的name取值为:@name</h1>
<h1>viewdata的age取值为:@age</h1>
<h1>viewdata的list取值为:@list1[1]</h1>
<h2>viewbag的name取值为:@name2</h2>
<h2>viewbag的age取值为:@age2</h2>
<h2>viewbag的list取值为:@list2[1]</h2>
效果:
Tempdata向单个页面传值:
@{
string data = TempData["newname"].ToString();
}
<h3>tempdata的值为 @data</h3>
<a href="Second">跳转</a>//并设定跳转
效果:
Tempdata跨页传值: