zoukankan      html  css  js  c++  java
  • 5.MVC框架开发(强类型开发,控制器向界面传递数据的几种方法)

     界面表单中的表单元素名字和数据库表的字段名相一一映射(需要哪个表的数据就是那个表的模型(Model))

    在View页面中可以指定页面从属于哪个模型

    注:以上的关系可以通过MVC的强类型视图开发来解决我们的开发代码的智能感知

    1.强类型视图开发的步骤

    1)在页面中指定强类型的类型(一定是引用类型),代码:例:

    @model List<MyMVCBookShop.Models.Book>

    2)从控制器传强类型的数据到View视图里,那么就必须保证传入的数据一定和强类型视图中定义的类型相一致,例:

    MyBookShopContext bookshop = new MyBookShopContext(); 
    public ActionResult Index()
            {
                List<Book> m = bookshop.Books.OrderBy(p => p.Id).Take(16).ToList();
                return View(m);
            }

    3)在视图页里应用它的Model属性,例:

    @{
    foreach (var item in Model)
    {
    <li><a href="/Book/Detail?bookid=@item.Id">@item.Title</li>
    }
    }
    

    2.控制器向界面传递数据的几种方法

    1)通过强类型传递

    2)通过ViewBag传递,它是动态解析类型,在运行的时候会自动解析是什么类型,编写的时候并不知道类型

    3)通过ViewData传递,它是集合的方式存储(以键值对的方式存储),在界面使用时先转换后使用,例:

    //在控制器当中
    MyBookShopContext bookshop = new MyBookShopContext();
            [HttpGet]
            public ActionResult Index()
            {
                List<Category> ListCstegory = bookshop.Categories.OrderBy(p => p.Id).ToList();
                ViewData["Category"] = ListCstegory;
                return View();
            }
    //在View页面中
     <ul class="black">
                    @{
        List<Category> listcate = ViewData["Category"] as List<Category>;
        foreach (var item in listcate)
        {
                            <li><a href="/Book/List/@item.Id">@item.Name</a></li>
        }
    }
    </ul>
    

    4)通过TempData来传递数据(一般主要用于不同Action之间传递数据),TempData只保留一次数据,也是以键值对的方式存储数据

    返回值为:return RedirectToAction("另一个Action名");这样TempData只能读取一次数据

    总结ViewBagViewDataTempData三者之间的区别?

  • 相关阅读:
    Form组件
    LAMP+Varnish的实现
    缓存反向代理-Varnish
    CDN初识
    HTTP缓存初探
    Keepalived搭建主从架构、主主架构实例
    实现高可用-Keepalived
    nginx负载均衡实例
    lvs集群实现lvs-dr模型和lvs-nat模型
    LVS介绍
  • 原文地址:https://www.cnblogs.com/szmgo/p/5181869.html
Copyright © 2011-2022 走看看