ASP.NET MVC3 实例(三) 使用 Controller 进行数据的的查询

上一篇我们主要介绍了下 MVC3 中实体数据模型(Entity Data Model)的创建,本篇我们将主要介绍下在 MVC3 中使用 Controller 进行数据的的查询。在进行 Controller 介绍前,我们先看看我们的实体数据模型:

接着上篇我们所做的工作,在"AndroidDB.Designer.cs"中,我们可以找到"Article"类、"ArticleComment"类,如下:

public partial class Article : EntityObject
{
    public int ID { get; set; }
    public string Title { get; set; }
}

上边的Article是我们 Article 表对应的类,也是我们原来在.NET中的使用方法,下边这个是 Entity Framework 中定义的类,使得我们可以通过 ObjectSet 属性的方式来遍历我们的表对象,很明显这给我们的操作带来了很大的方便。

public partial class AndroidEntities : ObjectContext
{
    public ObjectSet<Article> Article { get; set; }
    public ObjectSet<ArticleComment> ArticleComment { get; set; }
}

也许你可能不太明白 ObjectSet 到底是什么,没关系,你可以看看下图,把它当作 List<> 泛型使用就可以了,当然了我们有必要看看它到底是什么,在这里 TEntity 就是 Article 类型。在 ObjectSet<TEntity> 中定义了一些方法,如 public void AddObject(TEntity entity); 使用这个方法,我们可以很方便的实现添加操作,这在后边我们会介绍到。

ObjectSet 解释

下边就让我们看看 Control 中对 Model 数据的读取,因为 Entity Framework 正式版还没有发布,最终的写法我们还有待跟进,可以肯定的是,最终版代码肯定会更加简洁,操作会更加方便。首先,我们新建一个 HomeController 类,在 Controllers 文件夹上右键新建 Controller ,如下图:

MVC3 中添加 Controller

HomeController 类如下:

  public class HomeController : Controller
    {
        //
        // GET: /Home/
        public ActionResult Index()
        {
            return View();
        }
    }

此时,我们还没有创建 View 模板用来显示数据,当然我们这里的模板是基于 Razor 的。我们在 Index() 附近右键单击 Add View ,并为 View 命名为 "Index",如下图:

MVC3 中添加视图

View 命名

最后,我们得到的结果如下图所示:

MVC3 文件布局

接下来,让我们实现 HomeController 的方法,在我们的首页中,我们需要将 Article 表中的数据进行查询以进行显示。为简单起见,先不考虑分页等。这样,我们引入所需的命名空间,如下:

using Android.Models;

下边是我们类实现的方法,以两种形式返回我们所需的数据,此时我们返回的是 Article 对象的数据集,如下:

  public class HomeController : Controller
    {
        AndroidEntities android = new AndroidEntities();

        public ActionResult Index()
        {
            //android.Article,就是通过ObjectSet属性

            //List<Article>
            //var article = android.Article.ToList();

            //使用 Linq 查询
            var article = from a in android.Article
                    select a;
            //ViewResult
            return View(article);
        }
    }

实现的过程还是比较清晰的,两种方式都可以达到我们的目的。接下来,我们看看 View 数据的显示。Razor 是一种新的视图引擎,和先前 Aspx 模板语法主要不同在于它使用"@"符号,关于这个我们会慢慢的进行了解。我们先看看 View 中显示数据的写法,如下:

MVC3 razor 视图数据绑定

这里为了更好的说明,我将整个代码截了一张图做个说明。这里首先要注意 Model 属性是 Controller 传递给 View 数据对象的引用,可见我们可以通过 Model 属性来获取传递过来的数据。这里还有几个知识点是我们学习时要掌握的,1.我们看看第1、2行,前者类型是IEnumerable,T在这里是Article,后者是IList<T>,表示一组对象。这里不做更多的说明,我们需要注意的是要根据返回结果选择恰当的类型。第3行的布局引用我们先不管,我们将在后边专门看看 Razor 视图中布局方法。2.第2行这里是注释的,这也是 razor 注释时的写法。 3.在15行使用了foreach遍历Model,并进行了最终的输出显示,可见 razor 进行输出时格式为@加上属性。4.Html.Raw()方法,在 razor 中对输出默认进行了编码,此时使用Raw()方法表示不进行编码输出,这样便可显示我们的图片等,否则输出如<img src="****.jpg" />这种。

本篇说的有些多,如果你有什么不明白的地方,欢迎在留言中留言,我们来进行讨论。本篇 MVC3 中使用 Controller 就到这里,希望对新学者能有所帮助。

posted on 2011-10-26 16:46  caling  阅读(695)  评论(0编辑  收藏  举报

导航