zoukankan      html  css  js  c++  java
  • .net MVC中后台传前台的多种传值方式

    PS:一个Home控制器里两个Action方法Index和Temp 分别对应两个视图;

      Index页面用于显示单个参数传值

      Temp页面用于显示多个参数参数

      (项目命名空间:MVC多种传值方式)

     两个类:

      Student :  public int stuId { get; set; } public string stuName { get; set; } public int stuAge { get; set; } public char stuSex { get; set; } public string stuEmail { get; set; }

      User :  public int uId { get; set; } public string uName { get; set; } public string uPwd { get; set; }

     后台Index方法(后台传递单个参数的几种方法):

    public ActionResult Index()
            {
                #region ViewData传值
                //1)、传递对象
                ViewData["stu"] = new Student()
                {
                    stuId = 1,
                    stuName = "麻花筒",
                    stuSex = '',
                    stuAge = 20,
                    stuEmail = "25476342@qq.com"
                };
                //2)、传递标量值
                ViewData["flag"] = "能服于忍";
                #endregion
    
                #region ViewBag传值
                //1)、传递对象
                ViewBag.stu2 = new Student()
                {
                    stuId = 2,
                    stuName = "张三",
                    stuSex = '',
                    stuAge = 18,
                    stuEmail = "1472583699@qq.com"
                };
                //2)、传递标量值
                ViewBag.flag2 = "精忠报国";
    
                #endregion
    
                #region TempData传值
                //1)、传递对象
                TempData.Add("stu3", new Student()
                {
                    stuId = 3,
                    stuName = "李四",
                    stuSex = '',
                    stuAge = 20,
                    stuEmail = "1574258632@qq.com"
                });
                //2)、传递标量值
                TempData["flag3"] = "白昼流星";
                //3)、说明:使用Add方法和使用键值对作用是一样的;
                #endregion
    
                #region @model传值
                return View(new Student()
                {
                    stuId = 4,
                    stuName = "王五",
                    stuSex = '',
                    stuAge = 16,
                    stuEmail = "145236987@qq.com"
                });
    
                #endregion
    
            }
    View Code

    Index页面:

    @using MVC多种传值方式.Models;
    
    @model Student
    
    @{
        Layout = null;
        //ViewData传值
        Student stu = ViewData["stu"] as Student;
        string flag = ViewData["flag"] as string;
        //ViewBag传值
        Student stu2 = ViewBag.stu2 as Student;
        string flag2 = ViewBag.flag2 as string;
        //TempData传值(通过键值接收)
        Student stu3 = TempData["stu3"] as Student;
        string flag3 = TempData["flag3"] as string;
    
    }
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Home-Index</title>
    </head>
    <body>
        @Html.ActionLink("多个对象传值页面","/Temp")
        @{
    //ViewData传值
            <p>学号:@stu.stuId</p>
            <p>姓名:@stu.stuName</p>
            <p>年龄:@stu.stuAge</p>
            <p>性别:@stu.stuSex</p>
            <p>邮箱:@stu.stuEmail</p>
            <p>标志:@flag</p>
        }
        <hr />
        @{
    //ViewBag传值
            <p>学号:@stu2.stuId</p>
            <p>姓名:@stu2.stuName</p>
            <p>年龄:@stu2.stuAge</p>
            <p>性别:@stu2.stuSex</p>
            <p>邮箱:@stu2.stuEmail</p>
            <p>标志:@flag2</p>
        }
        <hr />
        @{
    //TempData传值
            <p>学号:@stu3.stuId</p>
            <p>姓名:@stu3.stuName</p>
            <p>年龄:@stu3.stuAge</p>
            <p>性别:@stu3.stuSex</p>
            <p>邮箱:@stu3.stuEmail</p>
            <p>标志:@flag3</p>
        }
        <hr />
        @{
    //model传值
            <p>学号:@Model.stuId</p>
            <p>姓名:@Model.stuName</p>
            <p>年龄:@Model.stuAge</p>
            <p>性别:@Model.stuSex</p>
            <p>邮箱:@Model.stuEmail</p>
            <p>标志:无</p>
        }
        </body>
    </html>
    View Code

    后台Temp方法(传递多个参数的几种方法):

    public ActionResult Temp()
            {
                #region dynamic传值(匿名类型)
    
                dynamic dy = new ExpandoObject();
                dy.stu = new Student()
                {
                    stuId = 5,
                    stuName = "赵六",
                    stuSex = '',
                    stuAge = 21,
                    stuEmail = "147852369@qq.com"
                };
                dy.stu2 = new Student()
                {
                    stuId = 6,
                    stuName = "田七",
                    stuSex = '',
                    stuAge = 12,
                    stuEmail = "125874693@qq.com"
                };
                dy.flag = "天王盖地虎";
                dy.user = new User()
                {
                    uId = 1,
                    uName = "admin",
                    uPwd = "123"
                };
                ViewData["dy"] = dy;
    
                #endregion
    
                #region Tuple传值(元数组)
                //说明:Tuple最多为八元数组 如果需传更多最后一个可用Tuple继续传
                var tuple = new Tuple<Student, Student, string, User, Tuple<Student, User>>(
                    new Student()
                    {
                        stuId = 7,
                        stuName = "阿帕奇",
                        stuSex = '',
                        stuAge = 25,
                        stuEmail = "1472000@qq.com"
                    }, new Student()
                    {
                        stuId = 8,
                        stuName = "卡卡西",
                        stuSex = '',
                        stuAge = 15,
                        stuEmail = "22356485@qq.com"
                    },
                    "宝塔镇河妖",
                     new User()
                     {
                         uId = 2,
                         uName = "administrator",
                         uPwd = "123456"
                     }, new Tuple<Student, User>(
                         new Student()
                         {
                             stuId = 9,
                             stuName = "帕卡丘",
                             stuSex = '',
                             stuAge = 10,
                             stuEmail = "11245336@qq.com"
                         },
                         new User()
                         {
                             uId = 3,
                             uName = "account",
                             uPwd = "147258"
                         }));
                ViewData["tuple"] = tuple;
    
                #endregion
    
                //说明:无论是使用dynamic还是Tuple,最后将值传递到前台可以使用
                //ViewData、ViewBag、TempData、@model
                //任意一种方式,这里使用的是ViewData
    
                return View();
            }
    View Code

    Temp页面:

    @using MVC多种传值方式.Models;
    
    @{
        Layout = null;
        dynamic dy = ViewData["dy"] as dynamic;
        var tuple = ViewData["tuple"] as Tuple<Student, Student, string, User, Tuple<Student, User>>;
    }
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Home-Temp</title>
    </head>
    <body>
        @Html.ActionLink("传递单个对象页面","/Index")
        @{
    //dynamic传值
            <p>学号:@dy.stu.stuId</p>
            <p>姓名:@dy.stu.stuName</p>
            <p>年龄:@dy.stu.stuAge</p>
            <p>性别:@dy.stu.stuSex</p>
            <p>邮箱:@dy.stu.stuEmail</p>
    
            <p>学号:@dy.stu2.stuId</p>
            <p>姓名:@dy.stu2.stuName</p>
            <p>年龄:@dy.stu2.stuAge</p>
            <p>性别:@dy.stu2.stuSex</p>
            <p>邮箱:@dy.stu2.stuEmail</p>
    
            <p>标志:@dy.flag</p>
    
            <p>用户id:@dy.user.uId</p>
            <p>用户名:@dy.user.uName</p>
            <p>用户密码:@dy.user.uPwd</p>
    
        }
        <hr />
        @{
            //tuple传值
            <p>学号:@tuple.Item1.stuId</p>
            <p>姓名:@tuple.Item1.stuName</p>
            <p>年龄:@tuple.Item1.stuAge</p>
            <p>性别:@tuple.Item1.stuSex</p>
            <p>邮箱:@tuple.Item1.stuEmail</p>
    
            <p>学号:@tuple.Item2.stuId</p>
            <p>姓名:@tuple.Item2.stuName</p>
            <p>年龄:@tuple.Item2.stuAge</p>
            <p>性别:@tuple.Item2.stuSex</p>
            <p>邮箱:@tuple.Item2.stuEmail</p>
    
            <p>标志:@tuple.Item3</p>
    
            <p>用户id:@tuple.Item4.uId</p>
            <p>用户名:@tuple.Item4.uName</p>
            <p>用户密码:@tuple.Item4.uPwd</p>
    
            <p>学号:@tuple.Item5.Item1.stuId</p>
            <p>姓名:@tuple.Item5.Item1.stuName</p>
            <p>年龄:@tuple.Item5.Item1.stuAge</p>
            <p>性别:@tuple.Item5.Item1.stuSex</p>
            <p>邮箱:@tuple.Item5.Item1.stuEmail</p>
    
            <p>用户id:@tuple.Item5.Item2.uId</p>
            <p>用户名:@tuple.Item5.Item2.uName</p>
            <p>用户密码:@tuple.Item5.Item2.uPwd</p>
        }
    </body>
    </html>
    View Code
  • 相关阅读:
    java面向对象4-多态
    机器学习降维--SVD奇异值分解
    hive中的null
    熵(二)-交叉熵与相对熵
    指数家族-Beta分布
    指数族函数
    java面向对象3-继承(继承、抽象类、抽象接口)
    网页自动刷新
    spring +hibernate 启动优化【转】
    svn is already locked解决方案
  • 原文地址:https://www.cnblogs.com/licm/p/12382116.html
Copyright © 2011-2022 走看看