Наличие проблемы с пониманием того, почему NerdDinner MVC возвращает ошибку - PullRequest
2 голосов
/ 30 июля 2009

Итак, я следую инструкциям ScottGu по NerdDinner, и у меня возникли некоторые проблемы, связанные с этой ошибкой. Я пытаюсь реализовать CRUD, поэтому сначала, редактируя данные, я начал с этого кода:

        public ActionResult Edit(int id)
    {
        Dinner dinner = dinnerRepository.GetDinner(id);
        return View(dinner);
    }

, который правильно отображает окно редактирования и дает мне поля для редактирования моих данных. Теперь, когда я продолжаю, и мое действие «Правка» превращается в следующее:

        [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Edit(int id, FormCollection formValues) 
    {
    Dinner dinner = dinnerRepository.GetDinner(id);
    UpdateModel(dinner);
    dinnerRepository.Save();
    return RedirectToAction("Details", new { id = dinner.DinnerID });
    }

Я возвращаю ошибку 404. Видимо, вид Edit не может быть найден. Мне очень трудно понять, почему это происходит. Я даже пытался скопировать точный синтаксис (что мне не нравится делать), но не повезло. Я что-то упускаю из виду?

РЕДАКТИРОВАТЬ: я происходит, как только я добавляю эту строку:

[AcceptVerbs (HttpVerbs.Post)]

может это поможет?

Ответы [ 2 ]

4 голосов
/ 30 июля 2009

В вашем контроллере должны быть оба метода.

Первый метод предназначен для запросов GET, запросов, которые не являются результатом отправки формы. Это те, которые вы видите, если вы идете / Edit / 1 / Edit / 2 и т. Д.

Метод ActionResult Edit () не заменяет ваш первый метод Edit (), но является дополнительным методом, который отвечает на запросы POST, являющиеся результатом отправки формы

0 голосов
/ 30 июля 2009

У вас на самом деле есть два Изменить действия, не так ли? Один должен быть без атрибута [AcceptVerbs] и используется для отображения начального представления «Правка», другое действие принимает только вызовы POST и используется для преобразования любых значений, отправленных из формы, в модель и сохранения их в хранилище данных .

Из вашей формулировки это похоже на то, что вместо добавления второго действия (метода) «Правка» вы редактировали старое.

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