• Asp.Net MVC Control向View传值


     1、通过View(Parameter)参数传值    

    Control:

    namespace MyMVCDemo.Controllers
    {
        public class PersonController : Controller
        {
            //
            // GET: /Person/
            public ActionResult Index()
            {
                Person whiteperson = new Person();
                whiteperson.Id = 1;
                whiteperson.Name = "James";
                whiteperson.Age = 28;
    
                return View(whiteperson);
            }
    
          }
    }
    

    View

    @model MyMVCDemo.Models.Person   //强类型视图
    @using MyMVCDemo.Models//引用实体类命名空间
    @{var person = ViewData.Model;}
    
    <br />
    <p>@person.Id</p>
    <p>@person.Name</p>
    

    2、通过动态对象ViewBag.key传值,ViewBag 是动态类型(dynamic),在程序运行时动态解析

    Control

    namespace MyMVCDemo.Controllers
    {
        public class PersonController : Controller
        {
            //
            // GET: /Person/
            public ActionResult Index()
            {
                Person whiteperson = new Person();
                whiteperson.Id = 1;
                whiteperson.Name = "James";
                whiteperson.Age = 28;
    
                ViewBag.person = whiteperson;
    
    
                return View();
            }
    
          }
    }
    

      

    View

    @using MyMVCDemo.Models
    @{var person = ViewBag.person;}
    
        <br />
        <p>@person.Id</p>
        <p>@person.Name</p>
    

    3、通过ViewData传值,是一个字典型,数据是Object类型,使用时要进行强制类型转换

    Control

    namespace MyMVCDemo.Controllers
    {
        public class PersonController : Controller
        {
            //
            // GET: /Person/
            public ActionResult Index()
            {
                Person whiteperson = new Person();
                whiteperson.Id = 1;
                whiteperson.Name = "James";
                whiteperson.Age = 28;
    
                ViewData["person"] = whiteperson;
    
    
                return View();
            }
    
          }
    }
    

    View

    @using MyMVCDemo.Models  
    @{var person =(Person)ViewData["person"]
    ;} <br /> <p>@person.Id</p> <p>@person.Name</p>

    4、通过TempData传值

    Control

    namespace MyMVCDemo.Controllers
    {
        public class PersonController : Controller
        {
            //
            // GET: /Person/
            public ActionResult Index()
            {
                Person whiteperson = new Person();
                whiteperson.Id = 1;
                whiteperson.Name = "James";
                whiteperson.Age = 28;
    
                TempData["id"] = whiteperson.Id;
                TempData["name"] = whiteperson.Name;
                TempData["age"] = whiteperson.Age;
    
    
                return View();
            }
    
          }
    }
    

    View

        <label>@TempData["id"]</label>
        <label>@TempData["name"]</label>
        <label>@TempData["age"]</label>
    

    5、总结

    ViewData是字典类型的,数据是Object类型的,因此使用时要进行强制类型转换;ViewBag是dynamic类型,在程序运行时动态解析;ViewData和ViewBag的生命周期与View相同,并且只对当期View有效;而TempData可以在不同的View中进行传值,是用session机制处理的,但是TempData里面的数据在访问了一次后会被清除。

    Control

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using MyMVCDemo.Models;
    
    namespace MyMVCDemo.Controllers
    {
        public class PersonController : Controller
        {
            //
            // GET: /Person/
            public ActionResult Index()
            {
                Person whiteperson = new Person();
                whiteperson.Id = 1;
                whiteperson.Name = "James";
                whiteperson.Age = 28;
                //ViewData向视图传递数据
                ViewData["id"] = whiteperson.Id;
                ViewData["name"] = whiteperson.Name;
                ViewData["age"] = whiteperson.Age;
                ViewData["person"] = whiteperson;
                //ViewBag向视图传递数据
                ViewBag.id = whiteperson.Id;
                ViewBag.name = whiteperson.Name;
                ViewBag.age = whiteperson.Age;
                ViewBag.person = whiteperson;
                //TempData向视图传递数据
                TempData["id"] = whiteperson.Id;
                TempData["name"] = whiteperson.Name;
                TempData["age"] = whiteperson.Age;
                TempData["temp"] = "TempData";
                ViewBag.temp = "ViewBagData";
                ViewData["temp"] = "ViewData";
                //return View(whiteperson);
                return View(whiteperson);
            }
    
            public ActionResult About()
            {
                return View();
            }
    	}
    }
    

    About视图里面调用:

    @{
        ViewBag.Title = "About";
    }
    
    <h2>About</h2>
    <div>@TempData["temp"]</div>
    <div>@ViewData["temp"]</div>
    <div>@ViewBag.temp</div>
    

    刷新About页面,则TempData["temp"]数据删除

  • 相关阅读:
    给a标签加样式的写法
    IE6、IE7下不支持overflowy:hidden;
    fontfamily:微软雅黑
    文字加下划线
    IE8下按钮与右边的距离比IE7和IE6的多了一倍
    在button(div)里设置背景图后,在IE6下背景图的高度被撑开了
    li中包含span,在IE6、IE7下会有3pxbug
    事件冒泡
    [LeetCode] Insert Interval 解题报告
    [LeetCode] Generate Parentheses 解题报告
  • 原文地址:https://www.cnblogs.com/mingjia/p/4521982.html
Copyright © 2020-2023  润新知