2011-02-10 65 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容器來控制列表生命週期。然後您可以將該實例傳遞給任何控制器構造函數。