欢迎来到天天文库
浏览记录
ID:16397867
大小:89.50 KB
页数:9页
时间:2018-08-09
《传递数据到视图母版页(适合动态绑定菜单)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、[翻译]ASP.NETMVC教程-传递数据到视图母版页(适合动态绑定菜单)原文地址:http://www.asp.net/learn/mvc/tutorial-13-cs.aspx这篇教程的目的是解释你可以怎样将数据从一个控制器传递到一个视图母版页。我们测试了两种传递数据到母版页的策略。首先,我们讨论了一个容易的方案,结果导致了一个难以维护的应用。接下来,我们测试了一个比较好的解决方案。它需要多一点的早期工作,但是会产生更容易点维护的应用。传递数据到母版页这篇教程的目的是解释你可以怎样将数据从一个控制器传递到一个视图母版页。我们测试了两种传递数据到母版页的策略。
2、首先,我们讨论了一个容易的方案,但这个方案导致应用难以维护。接下来,我们测试了一个比较好的解决方案。它需要多一点的早期工作,但是会产生更容易点维护的应用。问题想象下你正在创建一个电影数据库应用,然后你想要在应用的每一页都显示一个电影分类列表(如图1)。此外,这个电影分类表存储在数据库表里。因此,从数据库检索这些分类然后在一个视图母版页面里显示这些电影分类显然很有意义。图1:在视图母版页显示电影分类问题出来了。在视图母版页里你怎么检索电影分类列表?直接在母版页调用模型类的方法显然很诱人。换句话说,在你的模板页里检索数据库的数据是很诱人的。然而,绕过你的MVC控制器
3、去获得接触数据库会违反干净的关注点分离--这个MVC应用最主要的优点之一。在一个MVC应用里,你会想要所有的MVC视图和MVC模型的交换都由MVC控制器来处理。这种关注点的分离意味着一个更可维护的、适应性更强并且测试性更强的应用。在一个MVC应用,所有的数据传递到一个视图--包括视图母版页--都应该由控制器行为传递到视图。此外,数据应该利用视图数据的优势来传递。在这篇教程的其余部分,我测试了传递数据到视图母版页的两种方法。简单的解决方案让我们从一个简单的解决方案开始。这个简单的解决方案是在每一个控制器行为里传递视图数据到母版页。考虑下清单1的控制器。它暴露了名叫
4、Index()和Detials()的两个行为。Index()行为方法返回了Movies数据库表的所有电影。Details()行为方法返回了特定的电影分类的所有电影。清单1-ControllersHomeController.csusingSystem.Linq;usingSystem.Web.Mvc;usingMvcApplication1.Models;namespaceMvcApplication1.Controllers{ [HandleError] publicclassHomeController:Controller {
5、 privateMovieDataContext_dataContext=newMovieDataContext(); /// ///Showlistofallmovies /// publicActionResultIndex() { ViewData["categories"]=fromcin_dataContext.MovieCategories
6、 selectc; ViewData["movies"]=frommin_dataContext.Movies selectm; returnView(); } /// ///Showlistofmoviesinacategory /// publicActionResultDetails(intid) {
7、 ViewData["categories"]=fromcin_dataContext.MovieCategories selectc; ViewData["movies"]=frommin_dataContext.Movies wherem.CategoryId==id selectm; returnView(); }
8、 }}注意到Index
此文档下载收益归作者所有