Обрабатывать действие с неверным параметром Id - PullRequest
3 голосов
/ 11 декабря 2011

Я новичок в ASP.NET MVC, и мне интересно, является ли способ, которым я обработал эти случаи, наиболее подходящим.

У меня есть "ArticleController", который имеет действие под названием "Details" (Использовалавтоматически сгенерировать шаблон редактирования).

По умолчанию в таблице маршрутизации имеется необязательный идентификатор, и я хочу знать, как обрабатывать случаи, когда я не получаю Id или когда получаю неправильныйПараметр id.

Чтобы исправить это, я написал это (обратите внимание на атрибут DefaultValue):

        public ViewResult Details([DefaultValue(0)]int id)
    {
        Article article = db.Articles.Find(id);

        if (article == null)
        {
            return View();
        }
        return View(article);
    }

И в представлении, которое я написал это:

@if (Model == null)
{
    <div>Wrong article id was given.</div>
}
else
{
    // Handle as a normal case
}

Вы бы справились с этими делами по-другому?Если да, то как?

Ответы [ 2 ]

4 голосов
/ 11 декабря 2011

Я думаю, что самый чистый подход - настроить маршруты так, чтобы при отсутствии идентификатора пользователь направлялся к другому действию. Это то, что делает маршрут по умолчанию. Например: /Articles/ вызовет ArticleController::Index(), а /Articles/4 вызовет ArticleController::Details(4).

Что касается случая, когда идентификатор не найден, лично я предпочитаю возвращать ошибку 404:

return new HttpNotFoundResult("This doesn't exist");
1 голос
/ 11 декабря 2011

Вы можете сделать свой Id обнуляемым следующим образом:

public ViewResult Details(int? id)

Если пользователь не предоставит идентификатор или неверный, у идентификатора не будет значения, которое вы можете проверить с помощью id.HasValue. Если идентификатор имеет значение, вы можете получить его с помощью id.Value.

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