2011-02-10 112 views
3

在模型中,我有:了解MVC模型

public class BidModel 
{ 

    public int id { get; set; } 
    public string FirstName{ get; set; } 
    public string LastName{ get; set; } 
    public int Price{ get; set; } 
    public string Date{ get; set; } 

} 

在哪里,或者我应该如何定义一个全局列表List<BidModel> MyList = new List<BidModel>;我可以在一个控制器中添加项目,然后从另一个控制器中删除项目, 改变内容列表无论我想要什么。我知道与数据库一起工作,但我需要这个提供清单,因为我不想要太多的查询基础。

+0

我认为这个问题可能有点误导。我最初读错了。如果您不使用数据库来存储数据,那么拥有数据库的意义何在?我可以看到缓存的数据大多是静态的,但不是应用程序的肉。 – 2011-02-10 22:04:17

+0

好吧,我会告诉所有的故事因为我misunderstoud我正在拍一个网站 拍卖,所以我需要的bidHistory列表,我希望它的一切现在清除。我不需要数据库中的所有优惠。只有最大的竞标者。 – 2011-02-10 22:45:21

回答

4

在模式 - 视图 - 控制器中,控制器负责将正确的模型下移到视图,具体取决于您要调用的操作。考虑到这一点。你不想用你的BidModel创建一个全局列表。

由于您使用的是MVC 3,因此您可以使用dynamic属性ViewBag将其传递给View。

考虑一下:

public ActionResult RetreiveAllBids() 
{ 
    var bids = BidRepository.GetAllBids(); 

    ViewBag.Bids = bids.ToArray(); 

    return View(); 
} 

你当然可以使用LINQ-TO-*取决于你的ORM /数据存储。但是这可能会让您知道如何将List传递给视图。

编辑

我小姐读你的问题一点点,但我仍然认为上述是有效的,但是这取决于你如何希望自己的数据是accessable,当你要处理它,你有两种选择:

  • Web应用程序的整个生命周期
  • Session变量与当前用户居住期间住的静态变量

,你可能只希望这些accessable来自特定网站,也许你想出来打破这些功能,并把它们放在一个父类,在这里存放BidModel名单如下:

public IEnumerable<BidModel> Bids 
{ 
    get { return Session["Bids"] as IEnumerable<BidModel>; } 
    set { Session["Bids"] = value; } 
} 

这种方式可以只需要从需要添加/列表/删除功能的控制器上的这个父类派生出来,或者您想要对投标人做的任何事情。

1

您很可能会拥有一个BidModel存储库或处理该存储库的其他某种业务逻辑管理器。然后,您的控制器将通过此存储库输入您的基本CRUD操作,同时还允许您根据业务逻辑进行验证。

总之,将您的模型类视为业务对象。然后,您的控制器将与您的业务层一起处理业务对象。

1

在大多数ASP.NET MVC应用程序中,您确实有两个“模型”概念;有视图消耗的模型驱动它们呈现的内容(有时称为“视图模型”),然后是数据模型,通常是映射到数据库表的类。您通常不会操纵模型对象的List<>;相反,你坚持并从数据库中检索项目。查看LINQ to SQL或适用于您的数据模型的Microsoft技术实体框架。

0

一种选择是使用像结构图或ninject这样的ioc容器来控制列表生命周期。然后您可以将该实例传递给任何控制器构造函数。