


? MVC后台向前台传值
l Viewdata
Viewdata[key] = xj
l Viewbag
Viewbag.key = xj
l model
model传参一次只能传一个
model传参的类型转化更简单一点,
@model 接类型即可
如果model传参想传一个字符串可以这样 return view('index',"参数内容"),如果直接写return view("参数内容"),这个参数内容他会认为是视图的名字,而不是参数的内容!
ltempdata
用法和viewdata类似,TempData["name"] = value。只是他是一个临时变量,一次请求中有效,第二次就失效了
Viewdata,Viewbag其实都是一个键值对,三种传参的方式其实显示几乎都是一样的,字符串,int这些可以直接显示。如果是对象类型做一个转化在显示即可
一个action多钟传参可以一起使用
简单案例:
后台:
- public ActionResult Index()
- {
- //传一个简单的字符串
- ViewData["name"] = "hello razor22222";
-
- List<string> fruits = new List<string>() { "西瓜", "苹果", "桃子", "李子" };
-
- ViewData["fruits"] = fruits;
-
- UserInfo userInfo = new UserInfo() { Id = 1, UserName = "诸葛詹", Age = 19, Area = "蜀国" };
- ViewData["userInfo"] = userInfo;
-
-
- List<UserInfo> userInfos = new List<UserInfo>() {
- new UserInfo(){ Id=1, UserName="诸葛亮",Age=27, Area="蜀国" },
- new UserInfo(){ Id=2, UserName="诸葛亮",Age=30, Area="蜀国" },
- new UserInfo(){ Id=3, UserName="曹操",Age=30, Area="魏国" },
- new UserInfo(){ Id=4, UserName="孙权",Age=25, Area="吴国" },
- new UserInfo(){ Id=5, UserName="黄月英",Age=20, Area="蜀国" },
- new UserInfo(){ Id=6, UserName="黄忠",Age=70, Area="蜀国" },
- new UserInfo(){ Id=7, UserName="孙尚香",Age=18, Area="吴国" },
- new UserInfo(){ Id=2, UserName="诸诸侠",Age=27, Area="吴国" },
- };
-
- ViewData["userInfos"] = userInfos;
-
- return View();
- }
前台:
- <div style="margin-top:20px">
- @ViewData["name"]
- </div>
-
- <div style="margin-top:20px">
-
- @{
- List<string> friuts = ViewData["fruits"] as List<string>;
- WebApplication2.Models.UserInfo userInfo = ViewData["userInfo"] as WebApplication2.Models.UserInfo;
-
- List<WebApplication2.Models.UserInfo> userInfoList = ViewData["userInfos"] as List<WebApplication2.Models.UserInfo>;
- }
-
- @foreach (var item in friuts)
- {
- <div>@item</div>
- }
- </div>
-
- <div style="margin-top:20px">
-
- <div>
- 姓名:<span>@userInfo.UserName</span>,年龄:<span>@userInfo.Age</span>,国家:<span>@userInfo.Area</span>
- </div>
- </div>
-
-
- <div style="margin-top:20px">
-
- @foreach (var item in userInfoList)
- {
- <div>
- 姓名:<span>@item.UserName</span>,年龄:<span>@item.Age</span>,国家:<span>@item.Area</span>
- </div>
- }
-
- </div>
? 前台向后台传值
l 表单传值
直接提交表单即可
l 地址栏传值
问号传参
l 路由传值
使用路由配置传递参数
? Action之间传值,页面跳转传值
方法一:路由传值
很简单直接使用 RedirectToAction(string actionName, string controllerName, object routeValues)
这个方法的第三个就是用于传递参数的。
- return RedirectToAction("About", new Users() { username = "x", age = 24, address = "j" });
接收:
- public ActionResult About(Users user)
- {
- return View();
- }
传递一个匿名对象也是可以的
- return RedirectToAction("About", new { username = "李清照", address = "三国" });
接收:
- public ActionResult About(string username, string address)
- {
- return View();
- }
其实本质也是地址栏传参而已,所以要注意和路由设置冲突问题
方法二:TempData
- public ActionResult News()
- {
- TempData["name"] = "AJ";
-
- return RedirectToAction("About");
- }
-
-
- public ActionResult About()
- {
- string name = TempData["name"].ToString();
-
- return View();
- }
tempdata是基于session实现的他是一个临时变量,一次请求中有效,第二次就失效了。
当然如果是一次请求中获取多少也是可以的,所以有些说获取一次会就被销毁的说法是错误的
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)