View(视图)———菜单Menu

一.分类

1.选项菜单  OptionMenu

1>按menu键触发

2>事件源时Activity

2.上下文菜单  ContextMenu

长按组件时触发。

3.子菜单 SubMenu

addSubMenu()添加子菜单。

1 <?xml version="1.0" encoding="utf-8"?>
2 <menu xmlns:android="http://schemas.android.com/apk/res/android">
3
4     <item  android:id="@+id/me_1" android:title="删除"/>
5     <item  android:id="@+id/me_2" android:title="修改"/>
6 </menu>

Menu

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.example.wang.testapp2.TestActivity3"
11     android:orientation="vertical">
12
13     <Button
14         android:layout_width="match_parent"
15         android:layout_height="wrap_content"
16         android:text="按钮"
17         android:id="@+id/bt_1"/>
18
19     <Button
20         android:layout_width="match_parent"
21         android:layout_height="wrap_content"
22         android:text="上下文菜单按钮"
23         android:id="@+id/bt_2"/>
24
25 </LinearLayout>

SubMenu

  1 package com.example.wang.testapp2;
  2
  3 import android.app.Activity;
  4 import android.os.Bundle;
  5 import android.support.v7.app.AppCompatActivity;
  6 import android.view.ContextMenu;
  7 import android.view.Menu;
  8 import android.view.MenuInflater;
  9 import android.view.MenuItem;
 10 import android.view.SubMenu;
 11 import android.view.View;
 12 import android.widget.Button;
 13 import android.widget.Toast;
 14
 15 public class TestActivity3 extends Activity {
 16
 17     Button bt_1;
 18     Button bt_2;
 19
 20     @Override
 21     protected void onCreate(Bundle savedInstanceState) {
 22         super.onCreate(savedInstanceState);
 23         setContentView(R.layout.activity_test3);
 24
 25         bt_1=(Button)findViewById(R.id.bt_1);
 26         bt_2=(Button)findViewById(R.id.bt_2);
 27
 28         //给组件添加上下文菜单  Activity是OnCreateContextMenuListener的实现类
 29         bt_2.setOnCreateContextMenuListener(
 30                 this
 31         );
 32
 33         //点击
 34           bt_1.setOnClickListener(new View.OnClickListener() {
 35         @Override
 36         public void onClick(View v) {
 37
 38             Toast.makeText(TestActivity3.this, "按钮被点击了", Toast.LENGTH_SHORT).show();
 39         }
 40     });
 41
 42
 43     //长按
 44     bt_1.setOnLongClickListener(new View.OnLongClickListener() {
 45         @Override
 46         public boolean onLongClick(View v) {
 47
 48
 49             Toast.makeText(TestActivity3.this, "按钮被长按了", Toast.LENGTH_SHORT).show();
 50
 51             //事件是否已经被消费
 52             return true;
 53         }
 54     });
 55 }
 56
 57     //重写创建上下文菜单的方法
 58     @Override
 59     public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
 60         super.onCreateContextMenu(menu, v, menuInfo);
 61
 62         menu.add(1, 0, 1, "字体大小");
 63         menu.add(1,1,2,"背景颜色");
 64
 65         //添加子菜单
 66         SubMenu sm=menu.addSubMenu(1,2,3,"子菜单");
 67
 68         sm.add(2, 21, 0, "子菜单1");
 69         sm.add(2, 22, 1,"子菜单2");
 70
 71         //加载文件
 72         MenuInflater m=getMenuInflater();
 73         m.inflate(R.menu.test3_menu,menu);
 74     }
 75
 76     @Override
 77     public boolean onContextItemSelected(MenuItem item) {
 78
 79         Toast.makeText(TestActivity3.this, "上下文菜单的title="+item.getTitle(), Toast.LENGTH_SHORT).show();
 80
 81         return super.onContextItemSelected(item);
 82     }
 83
 84     //给Activity 添加选项菜单
 85     //重写
 86     @Override
 87     public boolean onCreateOptionsMenu(Menu menu) {
 88
 89
 90         //加载菜单文件方式
 91         //1-获得菜单加载器
 92         MenuInflater m=getMenuInflater();
 93
 94         //2-加载菜单文件  1)菜单文件 2)当前菜单
 95         m.inflate(R.menu.test3_menu,menu);
 96
 97
 98         return super.onCreateOptionsMenu(menu);
 99     }
100
101 }

SubMenu

二.选项菜单  OptionMenu

1.创建:重写 boolean  onCreateOptionMenu(Menu menu)

1>纯Java代码:menu.add();

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.example.wang.testapp2.TestActivity3"
11     android:orientation="vertical">
12
13     <Button
14         android:layout_width="match_parent"
15         android:layout_height="wrap_content"
16         android:text="按钮"
17         android:id="@+id/bt_1"/>
18 </LinearLayout>

OptionMenu

 1 package com.example.wang.testapp2;
 2
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.support.v7.app.AppCompatActivity;
 6 import android.view.ContextMenu;
 7 import android.view.Menu;
 8 import android.view.MenuInflater;
 9 import android.view.MenuItem;
10 import android.view.SubMenu;
11 import android.view.View;
12 import android.widget.Button;
13 import android.widget.Toast;
14
15 public class TestActivity3 extends AppCompatActivity {
16
17     Button bt_1;
18
19     @Override
20     protected void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.activity_test3);
23
24         bt_1=(Button)findViewById(R.id.bt_1);
25
26     //点击
27           bt_1.setOnClickListener(new View.OnClickListener() {
28         @Override
29         public void onClick(View v) {
30
31             Toast.makeText(TestActivity3.this, "按钮被点击了", Toast.LENGTH_SHORT).show();
32         }
33     });
34
35
36     //长按
37     bt_1.setOnLongClickListener(new View.OnLongClickListener() {
38         @Override
39         public boolean onLongClick(View v) {
40
41
42             Toast.makeText(TestActivity3.this, "按钮被长按了", Toast.LENGTH_SHORT).show();
43
44             //事件是否已经被消费
45             return true;
46         }
47     });
48 }
49
50       //给Activity 添加选项菜单
51     //重写
52     @Override
53     public boolean onCreateOptionsMenu(Menu menu) {
54
55         //添加菜单
56         menu.add(1,1,0,"添加");
57         menu.add(1,2,2,"修改");
58         menu.add(1,3,1,"删除");
59
60         return super.onCreateOptionsMenu(menu);
61     }
62 }

OptionMenu

2>加载menu资源文件

1-获得Menu加载器: MenuInflater m=getMenuInflater();

2-加载Menu资源文件:m.inflate(menu资源文件的id,menu当前菜单);

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.example.wang.testapp2.TestActivity3"
11     android:orientation="vertical">
12
13     <Button
14         android:layout_width="match_parent"
15         android:layout_height="wrap_content"
16         android:text="按钮"
17         android:id="@+id/bt_1"/>
18
19
20 </LinearLayout>

OptionMenu

1 <?xml version="1.0" encoding="utf-8"?>
2 <menu xmlns:android="http://schemas.android.com/apk/res/android">
3
4     <item  android:id="@+id/me_1" android:title="删除"/>
5     <item  android:id="@+id/me_2" android:title="修改"/>
6 </menu>

menu

 1 package com.example.wang.testapp2;
 2
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.support.v7.app.AppCompatActivity;
 6 import android.view.ContextMenu;
 7 import android.view.Menu;
 8 import android.view.MenuInflater;
 9 import android.view.MenuItem;
10 import android.view.SubMenu;
11 import android.view.View;
12 import android.widget.Button;
13 import android.widget.Toast;
14
15 public class TestActivity3 extends AppCompatActivity {
16
17     Button bt_1;
18
19     @Override
20     protected void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.activity_test3);
23
24         bt_1=(Button)findViewById(R.id.bt_1);
25
26           //点击
27           bt_1.setOnClickListener(new View.OnClickListener() {
28         @Override
29         public void onClick(View v) {
30
31             Toast.makeText(TestActivity3.this, "按钮被点击了", Toast.LENGTH_SHORT).show();
32         }
33     });
34
35
36     //长按
37     bt_1.setOnLongClickListener(new View.OnLongClickListener() {
38         @Override
39         public boolean onLongClick(View v) {
40
41
42             Toast.makeText(TestActivity3.this, "按钮被长按了", Toast.LENGTH_SHORT).show();
43
44             //事件是否已经被消费
45             return true;
46         }
47     });
48 }
49
50         //给Activity 添加选项菜单
51     //重写
52     @Override
53     public boolean onCreateOptionsMenu(Menu menu) {
54
55         //加载菜单文件方式
56         //1-获得菜单加载器
57         MenuInflater m=getMenuInflater();
58
59         //2-加载菜单文件  1)菜单文件 2)当前菜单
60         m.inflate(R.menu.test3_menu,menu);
61
62
63         return super.onCreateOptionsMenu(menu);
64     }
65 }

OptionMenu

3>以上两种加载方式可以并存

2. 回调:重写 boolean onOptionsItemSelected(MenuItem item)

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.example.wang.testapp2.TestActivity3"
11     android:orientation="vertical">
12
13     <Button
14         android:layout_width="match_parent"
15         android:layout_height="wrap_content"
16         android:text="按钮"
17         android:id="@+id/bt_1"/>
18
19 </LinearLayout>

OptionMenu

1 <?xml version="1.0" encoding="utf-8"?>
2 <menu xmlns:android="http://schemas.android.com/apk/res/android">
3
4     <item  android:id="@+id/me_1" android:title="删除"/>
5     <item  android:id="@+id/me_2" android:title="修改"/>
6 </menu>

Menu

 1 package com.example.wang.testapp2;
 2
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.support.v7.app.AppCompatActivity;
 6 import android.view.ContextMenu;
 7 import android.view.Menu;
 8 import android.view.MenuInflater;
 9 import android.view.MenuItem;
10 import android.view.SubMenu;
11 import android.view.View;
12 import android.widget.Button;
13 import android.widget.Toast;
14
15 public class TestActivity3 extends AppCompatActivity {
16
17     Button bt_1;
18
19     @Override
20     protected void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.activity_test3);
23
24         bt_1=(Button)findViewById(R.id.bt_1);
25
26         //点击
27           bt_1.setOnClickListener(new View.OnClickListener() {
28         @Override
29         public void onClick(View v) {
30
31             Toast.makeText(TestActivity3.this, "按钮被点击了", Toast.LENGTH_SHORT).show();
32         }
33     });
34
35
36     //长按
37     bt_1.setOnLongClickListener(new View.OnLongClickListener() {
38         @Override
39         public boolean onLongClick(View v) {
40
41
42             Toast.makeText(TestActivity3.this, "按钮被长按了", Toast.LENGTH_SHORT).show();
43
44             //事件是否已经被消费
45             return true;
46         }
47     });
48 }
49
50     //给Activity 添加选项菜单
51     //重写
52     @Override
53     public boolean onCreateOptionsMenu(Menu menu) {
54
55         //加载菜单文件方式
56         //1-获得菜单加载器
57         MenuInflater m=getMenuInflater();
58
59         //2-加载菜单文件  1)菜单文件 2)当前菜单
60         m.inflate(R.menu.test3_menu,menu);
61
62
63         return super.onCreateOptionsMenu(menu);
64     }
65
66     @Override
67     public boolean onOptionsItemSelected(MenuItem item) {
68
69         Toast.makeText(TestActivity3.this, "菜单项的id="+item.getItemId()+"菜单项的title="+item.getTitle(), Toast.LENGTH_SHORT).show();
70
71         //怎么判断菜单文件里的菜单哪个被选中了
72         if(item.getItemId()==R.id.me_1)
73         {
74             Toast.makeText(TestActivity3.this, "执行删除动作", Toast.LENGTH_SHORT).show();
75         }
76         else if (item.getItemId()==R.id.me_2)
77         {
78             Toast.makeText(TestActivity3.this, "执行修改动作", Toast.LENGTH_SHORT).show();
79         }
80
81
82         return super.onOptionsItemSelected(item);
83     }
84 }

OptionMenu

三.上下文菜单  ContextMenu

1.Activity是OnCreateContextMenuListener的实现类

2.创建:组件.setOnCreateContextMenuListener(this):在代码里添加MenuItem,方式同 选择菜单。

3.响应: 重写Activity的boolean   onContextItemSelected(MenuItem item)

4.与LongClick监听器的关系

1>LongClick监听器的优先级高

2>boolean onLongClick(View v)的返回值决定后续的监听器能否再继续处理

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.example.wang.testapp2.TestActivity3"
11     android:orientation="vertical">
12
13     <Button
14         android:layout_width="match_parent"
15         android:layout_height="wrap_content"
16         android:text="按钮"
17         android:id="@+id/bt_1"/>
18
19     <Button
20         android:layout_width="match_parent"
21         android:layout_height="wrap_content"
22         android:text="上下文菜单按钮"
23         android:id="@+id/bt_2"/>
24
25 </LinearLayout>

ContextMenu

  1 package com.example.wang.testapp2;
  2
  3 import android.app.Activity;
  4 import android.os.Bundle;
  5 import android.support.v7.app.AppCompatActivity;
  6 import android.view.ContextMenu;
  7 import android.view.Menu;
  8 import android.view.MenuInflater;
  9 import android.view.MenuItem;
 10 import android.view.SubMenu;
 11 import android.view.View;
 12 import android.widget.Button;
 13 import android.widget.Toast;
 14
 15 public class TestActivity3 extends Activity {
 16
 17     Button bt_1;
 18     Button bt_2;
 19
 20     @Override
 21     protected void onCreate(Bundle savedInstanceState) {
 22         super.onCreate(savedInstanceState);
 23         setContentView(R.layout.activity_test3);
 24
 25         bt_1=(Button)findViewById(R.id.bt_1);
 26         bt_2=(Button)findViewById(R.id.bt_2);
 27
 28         //给组件添加上下文菜单  Activity是OnCreateContextMenuListener的实现类
 29         bt_2.setOnCreateContextMenuListener(
 30                 this
 31         );
 32
 33         //添加长按监听器
 34        bt_2.setOnLongClickListener(new View.OnLongClickListener() {
 35            @Override
 36             public boolean onLongClick(View v) {
 37
 38                Toast.makeText(TestActivity3.this, "按钮被长按了", Toast.LENGTH_SHORT).show();
 39
 40                return false;//true后面不在处理
 41             }
 42         });
 43         //点击
 44           bt_1.setOnClickListener(new View.OnClickListener() {
 45         @Override
 46         public void onClick(View v) {
 47
 48             Toast.makeText(TestActivity3.this, "按钮被点击了", Toast.LENGTH_SHORT).show();
 49         }
 50     });
 51
 52
 53     //长按
 54     bt_1.setOnLongClickListener(new View.OnLongClickListener() {
 55         @Override
 56         public boolean onLongClick(View v) {
 57
 58
 59             Toast.makeText(TestActivity3.this, "按钮被长按了", Toast.LENGTH_SHORT).show();
 60
 61             //事件是否已经被消费
 62             return true;
 63         }
 64     });
 65 }
 66
 67     //重写创建上下文菜单的方法
 68     @Override
 69     public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
 70         super.onCreateContextMenu(menu, v, menuInfo);
 71
 72         menu.add(1, 0, 1, "字体大小");
 73         menu.add(1,1,2,"背景颜色");
 74
 75
 76         //加载文件
 77         MenuInflater m=getMenuInflater();
 78         m.inflate(R.menu.test3_menu,menu);
 79     }
 80
 81     @Override
 82     public boolean onContextItemSelected(MenuItem item) {
 83
 84         Toast.makeText(TestActivity3.this, "上下文菜单的title="+item.getTitle(), Toast.LENGTH_SHORT).show();
 85
 86         return super.onContextItemSelected(item);
 87     }
 88
 89     //给Activity 添加选项菜单
 90     //重写
 91     @Override
 92     public boolean onCreateOptionsMenu(Menu menu) {
 93
 94
 95         //加载菜单文件方式
 96         //1-获得菜单加载器
 97         MenuInflater m=getMenuInflater();
 98
 99         //2-加载菜单文件  1)菜单文件 2)当前菜单
100         m.inflate(R.menu.test3_menu,menu);
101
102
103         return super.onCreateOptionsMenu(menu);
104     }
105
106 }

ContextMenu

时间: 2024-08-03 19:25:24

View(视图)———菜单Menu的相关文章

菜单(Menu)的三中创建方式——Android开发之路2

菜单的三种创建方式 一.OptionsMenu---选项菜单 Android应用中的菜单默认是隐藏的,只有当用户点击手机上的MENU键,系统才会显示菜单.这种菜单叫做选项菜单(Options Menu)或系统菜单. 从3.0开始,Android不要求手机设备上必须提供MENU按键.因此Android推荐使用ActionBar来代替Menu. 在不同的版本中菜单显示效果有差异 二.ContextMenu---上下文菜单 三.PopupMenu---弹出式菜单 可以在指定的组件上设置弹出式菜单,默认

解决android4.0系统中菜单(Menu)添加Icon无效问题

在Android4.0系统中,创建菜单Menu,通过setIcon方法给菜单添加图标是无效的,图标没有显出来,2.3系统中是可以显示出来的.这个问题的根本原因在于4.0系统中,涉及到菜单的源码类 MenuBuilder做了改变,该类的部分源码如下: 1 public class MenuBuilder implements Menu { 2 ... 3 private boolean mOptionalIconsVisible = false; 4 .... 5 void setOptional

菜单Menu(AS开发实战第四章学习笔记)

4.5 菜单Menu Android的菜单主要分两种,一种是选项菜单OptionMenu,通过按菜单键或点击事件触发,另一种是上下文菜单ContextMenu,通过长按事件触发.页面的布局文件放在res/layout目录下,菜单的布局文件存放在res/menu目录下. 1.选项菜单OptionMenu 弹出选项菜单的途径有3种: (1)按菜单键 (2)在代码中手动打开选项菜单,即调用openOptionsMenu方法 (3)按工具栏右侧的溢出菜单按钮 实现选项菜单的功能需要重写以下两种方法: o

Android-上下文菜单Menu

上一篇博客介绍了,Android-普通菜单Menu,而这篇博客介绍Android-上下文菜单Menu AndroidManifest.xml 中加入权限: <!-- 读取联系人数据的权限 --> <uses-permission android:name="android.permission.READ_CONTACTS"/> <!-- 读取通话记录的全身 --> <uses-permission android:name="andr

Android 自定义View视图

创建全新的视图将满足我们独特的UI需求. 本文介绍在指南针开发中会用到的罗盘的界面UI,通过继承View类实现的自定义视图,以此来深刻了解自定义视图. 实现效果图: 源代码: 布局文件activity_main(其中CompassView继承View类): <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.

DNS主从服务,子域授权,view视图,日志系统,压力测试rsync配置

DNS主从服务,子域授权,view视图,日志系统,压力测试 DNS性能测试工具queryperfDNS查询过程: DNS主从建立: 环境: 主服务器:10.140.165.93 从服务器:10.140.165.169 关闭防火墙,关闭selinux. 主服务器建立: [[email protected] ~]# yum -y install bind-util bind #安装bind服务 [[email protected] ~]# vim /etc/named.conf #编辑主配置文件 o

Atitit.code&#160;base&#160;view&#160;视图的实现原理

Atitit.code base view 视图的实现原理 1. 视图的执行算法:1 2. 不可更新的视图:1 3. 关于视图的可插入性:insert2 4. 视图定义3 5. 调用3 1. 视图的执行算法: 存在两种执行算法: 1.  Merge:合并的执行方式,每当执行的时候,先将我们视图的sql语句与外部查询视图的sql语句,混合在一起,最终执行: 2.  Temptable:临时表模式,每当查询的时候,将视图所使用的select语句生成一个结果的临时表,再在当前的临时表内进行查询. 指的

linux下DNS主从复制,view视图,转发,子域授权

我们知道相同网段内各网络设备之间是基于mac通信,而跨网络的不同主机之间是基于IP地址通信.随着世界主机数量爆炸式的增长,对于记住数目众多IP和想访问未知对方IP的主机成为一个痛点.通过基于人们熟知的文字访问主机应运而生. DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析). DNS是一项

自定义View视图

自定义View视图文件查找逻辑 之前MVC5和之前的版本中,我们要想对View文件的路径进行控制的话,则必须要对IViewEngine接口的FindPartialView或FindView方法进行重写,所有的视图引擎都继承于该IViewEngine接口,比如默认的RazorViewEngine.但新版本MVC6中,对视图文件的路径方式却不太一样了,目前有两种方式,一种是通过RazorViewEngine,另外一种是通过新特性IViewLocationExpander接口. 通过RazorView

ASP.Net MVC View(视图)

View视图职责是向用户提供界面.负责根据提供的模型数据,生成准备提供给用户的格式界面. 支持多种视图引擎(Razor和ASPX视图引擎是官方默认给出的,其实还支持其它N种视图引擎,甚至你自己都可以写一套视图引擎) View和Action之间数据传递(前后台数据传递) 弱类型 ViewData[""] 动态型 ViewBag //dynamic 动态类型Model              后台:return View(data); //存入 ViewData.Model