2013-08-06 142 views
2

我有一個程序邏輯問題..asp.net詳細模型邏輯

好吧,讓我們開始吧。

我在模型中有2個類。

namespace Korbball.Models 
{ 
public class Clubs 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
    public string state { get; set; } 
    public string description { get; set; } 
} 

public class ClubDetails : Clubs 
{ 
    public string website { get; set; } 
    public string banner { get; set; } 
} 

}

在第一步驟中,我會調用所有俱樂部的概述與俱樂部類的條目。 如果我點擊一個俱樂部,有一個鏈接 - >網站/俱樂部/詳細信息/編號

現在,我將在此視圖上顯示來自俱樂部和ClubDetails的所有數據。

該數據存儲在數據庫中。

private static List<Clubs> clubs = new List<Clubs>(); 
    KorbballEntities db = new KorbballEntities(); 

    public KorbballRepository() 
    { 
     var clubsdata = db.Korbball_Clubs.ToArray(); 
     foreach (var c in clubsdata) 
     { 
      clubs.Add(new Clubs { id = c.ClubId, name = c.Name, state = c.State }); 
     } 
    } 

因此,我只獲得有關俱樂部信息的數據。 有關詳細信息,我是否應該生成一個包含所有信息的新列表?

希望任何人知道我的意思......不能宣佈它要好得多..

的感謝!

更新: 好吧,我覺得問題是,我無法找到誰可以教我的MVC邏輯= d

我有很多的俱樂部。這傢俱樂部已經基本信息(姓名,身份證,州)

這傢俱樂部也有詳細的信息像描述,橫幅,網站等

我做了一個ModelClass

ClubModel.cs

public class Clubs 
{ 
public int id { get; set; } 
public string name { get; set; } 
public string state { get; set; } 
public string description { get; set; } 
} 

public class ClubDetails : Clubs 
{ 
public string website { get; set; } 
public string banner { get; set; } 
} 

我會顯示所有俱樂部的基本信息與網站/俱樂部列表

如果我去詳細視圖,俱樂部/詳細信息/ ID我會sh ow所有信息(基本+詳細)

您的解決方案似乎很酷。我無法在互聯網上找到任何有關如何在這種情況下建立「最佳實踐」方法的想法。

+0

使用'ClubDetails'無處不在你通常用'Clubs'因爲前者在後者上繼承,而後者不知道前者的額外屬性。 –

回答

0

Club與Details之間的關係是一對一嗎?這聽起來像是基於你如何描述所有內容,但它沒有多少意義,因爲就像有人提到你是從俱樂部繼承的,所以你只需加載Club_Details,你就會自動獲得俱樂部專欄。

如果您的關係是一對多的最簡單的方法是將協會關聯到您的模型(數據庫上的外鍵關係),然後使用「包含」來告知實體框架您想要關聯的實體。我把它放在一起很快,所以語法可能不完美,基本思路是查看「包含」。

這個邏輯是有缺陷的,因爲它加載了許多俱樂部,然後加載俱樂部的細節,你想解決這個問題。

private static List<Clubs> clubs = new List<Clubs>(); 
private List<Club_Details> clubDetails = new List<Club_Details>(); 
// make a view model class that contains club and club details (one to many) 
private ClubData clubdata = new ClubData(); 

public KorbballRepository() 
{ 
    var clubsdata = db.Clubs.Include("Club_Details").ToArray(); 
    foreach (var c in clubsdata) 
    { 
     clubs.Add(new Clubs { id = c.ClubId, name = c.Name, state = c.State }); 

     /* sample of how to reference the Included entities use the association name 
      of Club_Details if it were a one to many relationship, ideally you 
      would create a view model or something with the two classes defined 
      and one club and list of club details, then define a list of the view 
      model for all Clubs */ 

     clubDetails = new List<Club_Details>(); 

     foreach (var d in c.Club_Details) 
     { 
       clubDetails.Add(new Club_Details { 
        website = d.website.ToString(), 
        banner = d.banner.ToString() 
       });; 
      } 

    /* load the data to the view model class and loop again */ 
    } 

} 
+0

哇,謝謝你的快速回答... 我會盡力解決它。也許你可以在我這樣做後看看它。 問候 –

+0

不客氣。我發現了一個更清晰的一對多關係示例,以及在這裏使用「Include」的概念:http://blog.stevensanderson.com/2011/01/28/mvcscaffolding-one-to-many-relationships/HTH –