ASP.NET MVC3 路由和多資料集的返回

來源:互聯網
上載者:User
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 中頁面配置方法。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.