ASP.NET MVC: что такое метод действия? Результат действия? Как они связаны? - PullRequest
6 голосов
/ 17 июля 2010

Извините, что задаю такой простой вопрос, но для меня это принципиально. Чтобы лучше понять фильтры, мне нужно понять это понятие. Хотя я уже несколько месяцев пользуюсь ASP.NET MVC и сейчас делаю хорошие демонстрации, я больше знаком с концепцией метода Action, чем с результатом action.

Что такое:

  1. Метод действия?
  2. Результат действия?
  3. Как они связаны?

Допустим, у меня есть это

public ViewResult ShowPerson(int id)
{
  var friend = db.Persons.Where(p => P.PersonID == id).First(); 
  return View(friend);
}

Как эти понятия применимы к приведенному выше коду?

Спасибо за помощь.

Ответы [ 2 ]

11 голосов
/ 17 июля 2010

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

Существует множество различных результатов действий, которые вы можете использовать.Все они получены из ActionResult :

  • ViewResult - если вы хотите вернуть View
  • FileResult -если вы хотите загрузить файл
  • JsonResult - если вы хотите сериализовать некоторую модель в JSON
  • ContentResult - если вы хотите вернуть обычныйtext
  • RedirectResult - если вы хотите перенаправить на какое-либо другое действие
  • HttpUnauthorizedResult - если вы хотите указать, что пользователь не авторизован дляполучить доступ к этому действию
  • FooBarResult - результат пользовательского действия, который вы написали
1 голос
/ 24 января 2015

Ответ @ Дарин-Димитров очень уместен. Но я вижу объяснение, данное на MSDN , также очень полезное.

Методы действия обычно имеют однозначное сопоставление с пользователем взаимодействия. Примеры взаимодействия с пользователем включают ввод URL в браузере, нажав на ссылку и отправив форму. Каждый из эти взаимодействия с пользователем приводят к отправке запроса на сервер. В В каждом случае URL запроса включает информацию о том, что MVC Framework использует для вызова метода действия.

Когда пользователь вводит URL в браузер, приложение MVC использует правила маршрутизации, определенные в файле Global.asax для анализа URL и определить путь к контроллеру. Контроллер тогда определяет подходящий метод действия для обработки запроса. От по умолчанию URL-адрес запроса обрабатывается как подпуть, который включает имя контроллера, за которым следует имя действия. Например, если пользователь вводит URL http://contoso.com/MyWebSite/Products/Categories, Подпуть - / Продукты / Категории. Правило маршрутизации по умолчанию «Продукты» как префикс имени контроллера, который должен заканчиваться на «Контроллер» (например, ProductsController). Он относится к «категориям» как Название акции. Следовательно, правило маршрутизации вызывает Метод категорий контроллера Products для обработки запрос. Если URL заканчивается на / Products / Detail / 5, маршрутизация по умолчанию правило обрабатывает «деталь» как имя действия, а метод детали контроллера Products вызывается для обработки запроса. От по умолчанию значение "5" в URL будет передано методу Detail в качестве параметра.

...