2010-03-21 120 views
1

我已經開始類似topic,但仍然沒有找到最終解決方案... 所以,我在這裏與新的:)我從頭開發NerdDinner,現在我來到了我定義DinnerViewModel的地方。
these instructions(從上市5開始)我來到了這一點:
ASP.NET MVC Viewmodel麻煩

namespace Nerd.Controllers 
{ 

    // View Model Classes 

    public class DinnerViewModel 
    { 
     public DinnerViewModel(List<Dinner> dinners) 
     { 
      this.Dinners = dinners; 
     } 

     public List<Dinner> Dinners { get; private set; } 

    } 

    public class DinnerController : Controller 
    { 
     private DinnerRepository dinnerRepository = new DinnerRepository(); 

     .... 

     public ActionResult NewDinners() 
     { 
      // Create list of products 
      var dinners = new List<Dinner>(); 
      dinners.Add(new Dinner(/*Something to add*/)); 

      // Return view 
      return View(new DinnerViewModel(dinners)); 
     } 


    } 
} 

此外,Dinner表中的NerdDinner這個新版本是有點短(它包含DinnerIDTitleEventDateDescription字段)。

不管我怎麼努力在這裏添加dinners.Add(new Dinner(/*Something to add*/));我總是得到以下錯誤

錯誤1「Nerd.Model.Dinner」不 包含一個構造函數「1」 參數C:\文檔和 設置\伊利亞·\我的文檔\ Visual Studio的 2008年 \項目\書呆子\書呆子\ \控制器150 DinnerController.cs 25書呆子

因爲我總初學者r在C#和一般OOP,我不知道該怎麼做在這裏...我想我需要聲明一個構造函數,但如何以及在哪裏呢?

感謝,

+1

總的來說,我強烈建議不要像MVC應用程序那樣詳細說明。你必須首先理解底層概念。你仍然可以非常快地取得很大的進步,但不要在比賽中間開始。 我一直在那條路上 - 它可能令人沮喪,效率極低。這其實只是一個好建議,我不想讓你灰心。 – mnemosyn 2010-03-21 21:06:27

+1

我知道你的意思,但我得到了我的本科畢業論文在ASP.NET MVC建立CMS,所以從(程序)PHP跳轉到面向對象的C#,當我是不是在編程初學者,只有這OOP是爲現在正在煩惱:)感謝您的建議 – 2010-03-21 21:14:11

回答

2

如果你想初始化新的Dinner對象的值,如果你是新的C#和編程使用這種結構

dinners.Add(new Dinner() { Title = "DinnerTitle", Description = "DinnerDescription" }); 
+0

這就是它!我一直在用正常的方括號嘗試,從來沒有想過嘗試使用大括號。謝謝! – 2010-03-21 21:07:06

1

異常消息說,這一切。您的Dinner對象沒有帶1個參數的構造函數。因爲有在Dinner類,可以讓你創建一個Dinner對象的一個​​參數就沒有方法

new Dinner(someVariable) 

:所以你不能做到這一點。

+0

所以我需要創建新的(我想部分)類Dinner.cs並創建一個構造方法? – 2010-03-21 21:01:57

+0

@ile,或者你必須爲Dinner類創建一個接受1個參數的構造函數,或者你在創建ViewModel時必須使用它的現有構造函數。 – 2010-03-21 21:05:14

+0

LukLed給了我正在尋找的答案。我不確切知道你現在的構造函數 – 2010-03-21 21:11:19

1

如果你一直在關注的書呆子晚餐「教程」,你可能已經使用LINQ2SQL和默認生成的代碼與參數的構造函數(方法稱爲「晚餐()」)定義Dineer。

相反,你可以使用屬性來設置對象的值:

Dinner dinner = new Dinner; 
dinner.Title = "My dinner"; 
dinner.Description ="..."; 
// etc. 
+0

我一直在關注書呆子晚餐教程,所有的「測試」部分,但就像我說的,我在這裏是全新的,我從一開始就無法完全掌握它。有一些事情不同於我想要做的事情... – 2010-03-21 21:05:02

+0

我以前就是這樣做的,但後來我無法像這樣傳遞晚餐對象:return View(new DinnerViewModel(dinner)); – 2010-03-21 21:08:41