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三者之间的区别?

  • 相关阅读:
    css定位
    题解 P2345 【奶牛集会】
    浅谈主席树
    浅谈Manacher算法
    CSP2019 游记
    P5025 [SNOI2017]炸弹
    浅谈2-SAT
    DAY 5模拟赛
    DAY 3
    Luogu P2915 [USACO08NOV]奶牛混合起来
  • 原文地址:https://www.cnblogs.com/szmgo/p/5181869.html
Copyright © 2011-2022 走看看