zoukankan      html  css  js  c++  java
  • [转] ASP.NET MVC3 路由和多数据集的返回

    1.ASP.NET MVC3 中的路由

    同前边一样本篇并不会过多的介绍理论知识,我们在Global.asax.cs文件中可以看到如下代码:

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );
    

    下边我们模仿上边来完成一个我们将会用到的路由,如下:

    routes.MapRoute(
         null, // 没必要指定路由名
         "{controller}/{action}/{id}", // URL with parameters
         new { controller = "Archive", action = "Post", id = UrlParameter.Optional } // Parameter defaults
    );
    

    上边两者定义的 Url 分别如下:

    • /
    • /archive/post/1

    关于路由原理、路由顺序、各种重载的写法这里不详细介绍,给出第2个主要为了下边工作的进行。

    2.ASP.NET MVC3 中多数据集的返回

    如上边提到的,在前一篇中,我们已经实现了在Home页中读取并显示数据,接下来,当用户点击阅读的时候,应该跳转到详细页来阅读详细内容,我们按先前的方法添加名为 Archive 的控制器,并为其创建名为 "Post" 的视图。

    接下来,我们需要在 Archive 控制器中完成数据的读取,因为我们在显示文章详情的同时要显示用户的评论,这样 Article 对象和 ArticleComment 对象为两个实体。本篇将重新创建一个类,用来返回,如下:

    public class ACModel
    {
        //C# 3自动属性
        public Article Article { get; set; }
        public IEnumerable Comment { get; set; }
    }
    

    接下来,我们分别获取我们需要的数据,并返回,如下:

    //根据文章ID查询,返回结果
    public ActionResult Post(int id)
    {
         //单一的Article实体
         var article = android.Article.Single(a => a.ID == id);
    
         // 使用Linq查询, comments是IEnumerable集
         var comments = from a in android.ArticleComment
                        where a.ArticleID == id
                        select a;
    
         ACModel model = new ACModel { Article = article, Comment = comments };
         return View(model);
    }

    可能有很多直接学习 ASP.NET MVC 的朋友对 Linq 语法并不是很了解,如果你不是很了解的话可以看看基本 LINQ 查询操作 (C#),因为我们后边使用到的分页等会常用到。

    可见,这样就解决了在 ASP.NET MVC3 中一个 View 中返回多个数据集的问题,我们显示数据时可根据 ACModel 对象的属性来完成。当然,也可以通过使用视图等,并建立对应的类来解决此类问题。接下来,就要在 View 中来进行显示了:

    //Model 是ACModel对象的引用,前边已经提过
    @model Android.Controllers.ArchiveController.ACModel
    @{
        var article = Model.Article;
        var comment = Model.Comment;
     }
    

    显示文章标题为:@article.Title,显示评论时,因为comment为IEnumerable集,显示时进行遍历,如下:

    @foreach (var c in comment)
    {
        <p>@c.Comment</p>
    }
    

    因为这里进行数据显示时,同上篇类似,所以在这里就简单的描述下。希望本篇在 ASP.NET 中返回多个数据集能给你带来一些帮助,下篇我们简单看看 ASP.NET MVC3 中页面布局方法。

  • 相关阅读:
    BootStrap行内编辑
    NPOI学习笔记
    仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'Address'中的标识列指
    .Net MVC发布出错 Server Error in '/' Application.
    C# 新特性
    System.Runtime.InteropServices.COMException:“服务器出现意外情况。 (异常来自
    BootStrap的表格加载json数据,并且可以搜索,选择
    NPOI导入导出Excel
    读取Easy UI的DATa grid里面的所有数据
    C# 导出Excel
  • 原文地址:https://www.cnblogs.com/RobotTech/p/2104874.html
Copyright © 2011-2022 走看看