NerdDinner Обработка исключений

Я работаю с примером NerdDinner ASP.NET MVC 1.0.

У меня все это работает отдельно от обработки исключений. Я немного изменил его для собственной выгоды, но в основном, когда я создаю новую запись, которая нарушает правило проверки, я получаю исключение ApplicationException вместо формы, выделяющей неправильное поле.

partial void OnValidate(ChangeAction action)
{
    if (!IsValid)
        throw new ApplicationException("Rule violations prevent saving");
}

.. в основном код поступает сюда (генерирует новое исключение), а затем VS прерывается на исключение.

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection formValues)
{
    Customer c = customerRepository.GetCustomer(id);
    try
    {
        UpdateModel(c);
        customerRepository.Save();
        return RedirectToAction("Details", new { id=c.CustomerId });
    }
    catch
    {
        ModelState.AddRuleViolations(c.GetRuleViolations());
        return View(c);
    }
}

Может ли кто-нибудь рисковать тем, что я сделал неправильно?

РЕДАКТИРОВАТЬ: Я должен добавить, что я просмотрел несколько связанных постов здесь, на SO, но ни один не был совершенно такой же проблемой, насколько я мог видеть.

1 ответ

Решение

Я думаю, что это правильно. Но вы также можете использовать свойство ModelState.IsValid чтобы избежать выбрасывания исключения.

Смотрите эти ссылки тоже:

Проверка данных модели в приложении MVC

Что такое ModelState.IsValid для ASP.NET MVC в NerdDinner?

Другие вопросы по тегам