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

转载于:https://www.cnblogs.com/szmgo/p/5181869.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值