ASP.NET MVC Viewmodel проблемы - PullRequest
1 голос
/ 21 марта 2010

Я уже начал похожую тему , но все еще не нашел окончательного решения ... Итак, вот я с новым :) ... Я разрабатываю NerdDinner с нуля, и теперь я пришел к точке, где я определяю DinnerViewModel.
Следуя этим инструкциям (начиная с Листинг 5 ) я пришел к этому:

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 немного укорочена (она содержит поля DinnerID, Title, EventDate и Description).

Неважно, что я пытаюсь добавить сюда dinners.Add(new Dinner(/*Something to add*/)); Я всегда получаю следующую ошибку

Ошибка 1 «Nerd.Model.Dinner» не содержит конструктор, который принимает '1' аргументы C: \ Documents and Настройки \ или \ Мои документы \ Визуальные студия 2008 \ Projects \ Nerd \ Nerd \ Controllers \ DinnerController.cs 150 25 Nerd

Поскольку я абсолютный новичок в C # и вообще ООП, я понятия не имею, что здесь делать ... Полагаю, мне нужно объявить конструктор, но как и где именно?

Спасибо
Ile

Ответы [ 3 ]

2 голосов
/ 22 марта 2010

Если вы хотите инициализировать значения в новом объекте Dinner, используйте эту конструкцию

dinners.Add(new Dinner() { Title = "DinnerTitle", Description = "DinnerDescription" });
1 голос
/ 22 марта 2010

Если вы следовали «учебному пособию для ужина с ботаником», вы, вероятно, использовали Linq2Sql, и сгенерированный по умолчанию код определяет Dineer с помощью конструктора без параметров (метод под названием «Dinner ()»).

Вместо этого вы можете использовать свойства для установки значений объекта:

Dinner dinner = new Dinner;
dinner.Title = "My dinner";
dinner.Description ="...";
// etc.
1 голос
/ 21 марта 2010

Сообщение об исключении говорит само за себя. У вашего Dinner объекта нет конструктора, который принимает 1 аргумент. Таким образом, вы не можете сделать это:

new Dinner(someVariable)

Поскольку в классе Dinner нет метода, который позволял бы вам создать объект ужин с одним аргументом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...