ASP.NET MVC 同一view返回多個Model或數據集的方法


Asp.net MVC中,一次默認只能返回一個Model,如果調用多個數據集,只能用ViewData來導來導去,好像很麻煩,所以,可以給model擴展方法來實現(聲明一下:這方法只針對MVC2之前,MVC3之后已支持泛類型,直接使用ViewBag傳過去即可,非常方便的。

首先,在控制器中定義一個類,內容如下:
  public  class blogModel
    {
         public IQueryable<T_Type> types {  getprivate  set; }
         public IQueryable<T_Post> posts {  getprivate  set; }
         public blogModel(IQueryable<T_Type> types, IQueryable<T_Post> posts)
        {
             this.types = types;
             this.posts = posts;
        }
    } 

以此來接收兩個IQueryable,然后 返回的時候
 
  IQueryable<T_Type> types =  from t  in cb.T_Type  select t;
            IQueryable<T_Post> posts = ( from p  in cb.T_Post  orderby p.updateTime  select p).Take( 10); 
             // ViewData["Message"] = "Welcome to ASP.NET MVC!";
             return View( " Index ", new blogModel(types,posts)); 

 

視圖文件的第一行要引用 
<% @ Page Language = " C# "  MasterPageFile = " ~/Views/Shared/Site.Master "  Inherits = " System.Web.Mvc.ViewPage<MvcBlog.Controllers.blogModel> "   %>
 
然后就可以使用types和posts數據集啦!!!
     <% -- 文章類別 -- %>
         < div  id ="lcategory" >
             < h4 >
                 < span >我的文章分類 </ span ></ h4 >
             < ul >
                 <%  foreach (var type in Model.types)
                   {
%>
                 < li > <% = Html.ActionLink( type.typeName, " # " ) %> </ li >
                 <% %>
             </ ul >
             < br  />
         </ div >
         <% --  最近文章 -- %>
         < div  id ="llatest" >
             < h4 >
                 < span >最新文章列表 </ span ></ h4 >
             < ul >
                 <%  foreach (var post in Model.posts)
                   {
%>
                 < li >  <% = Html.ActionLink( post.title, " # " ) %> </ li > 
                 <% %>
             </ ul >
             < br  />
         </ div >
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM