ImmortalCAT
@ImmortalCAT
C# loving

Какие ответы лучше отдавать с сервера?

Вот например
[HttpPost]
        public ActionResult Create(ViewModel vm)
        {
            if (ModelState.IsValid)
            {
                var model = Mapper.Map<ViewModel, Post>(vm);
                ps.CreatePost(model);
                ps.SavePost();
                RedirectToRoute("Slug", new { controller = "Log", action = "Details", id = model.Id, slug = model.Slug });
            }
            return View(vm);
        }

Тут почти всё ясно...
Но тут
public ActionResult Edit(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Post model = ps.GetPostById(id.Value);
            if (model == null)
            {
                return HttpNotFound();
            }
            var vm = Mapper.Map<Post, PostViewModel>(model);
            return View(vm);
        }

Правильно ли, при пустом идентификаторе, мы получаем bad request, а при не нахождении модели 404?
Есть какой нибудь шаблон? best practices?
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
impwx
@impwx
Разработчик
Всё правильно. Если вдуматься в смысл метода, он должен получать id записи и возвращать либо ее содержимое, либо флаг ее отсутствия.

Если вы замените int? на int и уберете первую проверку, приложение будет работать точно так же, но обработка ошибок будет проводиться автоматически средствами фреймворка. Он будет искать метод с подходящей сигнатурой, не найдет его и выдаст стандартное сообщение об ошибке.

Таким образом, нулевое значение id для логики не важно - это сделано, чтобы нагляднее показать, как можно обрабатывать ошибки вручную.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Не корректно сравнивать Create и Edit. К Edit вопросов не возникает имхо правильно и понятно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы