我遇到了程序逻辑问题..
好的,让我们开始。
我在模型中有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; }
}
}
在第一步中,我将通过俱乐部课程的条目呼叫所有俱乐部的概述。 如果我点击一个俱乐部,就会有一个链接 - >网站/俱乐部/详细信息/编号
现在,我将在此视图中显示来自Clubs和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 });
}
}
所以我只得到俱乐部信息的数据。 对于细节,我应该生成包含所有信息的新LIST吗?
希望有人知道我的意思......不能宣布它好多了......
谢谢!
更新: 好吧,我认为问题是,我找不到能教我mvc logic = 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; }
}
我将显示所有俱乐部的列表,其中包含与网站/俱乐部的基本信息
如果我进入详细视图,Clubs / Details / Id我将显示所有信息(基本+详细)
您的解决方案似乎很酷。我无法在互联网上找到任何关于如何在这种情况下建立“最佳实践”方法的想法。
答案 0 :(得分:0)
俱乐部和细节之间的关系是一对一的吗?这听起来像是基于你如何描述一切,但它没有那么多意义,因为就像有人提到你从俱乐部继承,所以你可以加载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 */
}
}