2010-03-21 123 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