ASP.NET MVC: проверка сервера и сохранение параметров URL при возврате представления - PullRequest
0 голосов
/ 28 января 2010

В настоящее время у меня есть следующий код для POST для редактирования заметки клиента.

 [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult EditNote(Note note)
    {
        if (ValidateNote(note))
        {
            _customerRepository.Save(note);
            return RedirectToAction("Notes", "Customers", new { id = note.CustomerID.ToString() });
        }
        else
        {
            var _customer = _customerRepository.GetCustomer(new Customer() { CustomerID = Convert.ToInt32(note.CustomerID) });
            var _notePriorities = _customerRepository.GetNotePriorities(new Paging(), new NotePriority() { NotePriorityActive = true });

            IEnumerable<SelectListItem> _selectNotePriorities = from c in _notePriorities
                                                                select new SelectListItem
                                                                {
                                                                    Text = c.NotePriorityName,
                                                                    Value = c.NotePriorityID.ToString()
                                                                };

            var viewState = new GenericViewState
            {
                Customer = _customer,
                SelectNotePriorities = _selectNotePriorities
            };

            return View(viewState);
        }


    }

Если проверка завершится неудачно, я хочу, чтобы он снова отобразил представление EditNote, но сохранил параметры URL (NoteID и CustomerID) для чего-то вроде этого: "http://localhost:63137/Customers/EditNote/?NoteID=7&CustomerID=28"

Есть идеи, как этого добиться?

Спасибо!

1 Ответ

0 голосов
/ 28 января 2010

Это действие выполнено с помощью сообщения. Разве вы не хотите, чтобы параметры передавались как часть формы, а не как URL?

Если вы этого хотите, я полагаю, вы могли бы выполнить RedirectToAction для действия edit GET, которое содержит noteId и customerId. Это фактически сделает ваше действие похожим на это:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditNote(Note note)
{
    if (ValidateNote(note))
    {
        _customerRepository.Save(note);
        return RedirectToAction("Notes", "Customers", new { id = note.CustomerID.ToString() });
    }

    //It's failed, so do a redirect to action. The EditNote action here would point to the original edit note url.
    return RedirectToAction("EditNote", "Customers", new { id = note.CustomerID.ToString() });
}

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

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