2010-07-17 24 views
7

Lamento hacer una pregunta tan básica, pero es algo fundamental para mí. Para entender mejor los filtros, necesito entender estas nociones. Aunque estoy en ASP.NET MVC desde hace unos meses y ahora estoy haciendo demos agradables, estoy más familiarizado con el concepto de método de acción que con el resultado de la acción.ASP.NET MVC: ¿Qué son los métodos de acción? Resultado de la acción? ¿Como están relacionados?

¿Cuáles son:

  1. Acción Método?
  2. Acción Resultado?
  3. ¿Cómo están relacionados?

Digamos que tengo este

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

como estos conceptos se aplican al código anterior?

Gracias por ayudarnos.

Respuesta

9

En su ejemplo ShowPerson es la acción. Cada acción debe devolver un resultado de acción (en su caso, devuelve una vista). Por lo tanto, cuando se invoca un método de acción de controlador, se procesa y se decide qué vista sería la más adecuada para representar el modelo.

Hay muchos resultados de acción diferentes que puede utilizar. Todos ellos se derivan de ActionResult:

  • ViewResult - si desea volver a View
  • FileResult - si desea descargar un archivo
  • JsonResult - si desea realizar una serie algún modelo en JSON
  • ContentResult - si desea volver texto plano
  • RedirectResult - si desea redirigir a alguna otra acción
  • HttpUnauthorizedResult - si se quiere indicar que el usuario no está autorizado a acceder a esta acción
  • FooBarResult - resultado acción personalizada que usted escribió
+0

Tengo una mejor comprensión ahora. Entonces, un resultado de acción es solo un método regular. Incluso puedo ver, por ejemplo, View (object). Muchas gracias. – Richard77

+2

@ Richard77, un resultado de acción es el tipo de devolución de un método regular (que se llama acción). 'View (object)' es simplemente un método definido en la clase 'Controller' que devuelve' ViewResult'. –

+0

Ok, veo aún mejor. – Richard77

1

respuesta por @ Darin-Dimitrov es en gran medida hasta el punto. Pero veo explicación dada en MSDN también muy útil.

Los métodos de acción suelen tener un mapeo de uno a uno con las interacciones del usuario . Los ejemplos de interacciones del usuario incluyen ingresar una URL en el navegador, hacer clic en un enlace y enviar un formulario. Cada uno de estas interacciones del usuario provoca que se envíe una solicitud al servidor. En cada caso, la URL de la solicitud incluye información que el marco MVC utiliza para invocar un método de acción.

Cuando un usuario entra en un URL en el navegador, la aplicación MVC utiliza reglas de encaminamiento que se definen en el archivo Global.asax para analizar el URL y para determinar la ruta del controlador. El controlador luego determina el método de acción apropiado para manejar la solicitud.Por predeterminado, la URL de una solicitud se trata como una ruta secundaria que incluye el nombre del controlador seguido del nombre de la acción. Por ejemplo, si un usuario ingresa a la URL http://contoso.com/MyWebSite/Products/Categories, , la subruta es/Productos/Categorías. La regla de enrutamiento predeterminada trata "Productos" como el nombre de prefijo del controlador, que debe finalizar con "Controlador" (como ProductsController). Trata "Categorías" como el nombre de la acción. Por lo tanto, la regla de enrutamiento invoca el método de Categorías del controlador de Productos para procesar la solicitud . Si la URL finaliza con/Products/Detail/5, la regla de enrutamiento predeterminada trata el "Detalle" como el nombre de la acción y se invoca el método de Detalle del controlador de Productos para procesar la solicitud. Por por defecto, el valor "5" en la URL se pasará al método de Detalle como parámetro.

+0

@bummi Estoy de acuerdo con su punto. He editado la respuesta. Gracias. –

Cuestiones relacionadas