Propósito de ActionName

¿Cuál es el beneficio de establecer un alias para un método de acción usando el atributo “Nombre de acción”? Realmente no veo mucho beneficio al proporcionarle al usuario la opción de llamar a un método de acción con otro nombre. Después de especificar el alias, el usuario puede llamar al método de acción solo utilizando el alias. Pero si es necesario, ¿por qué el usuario no cambia el nombre del método de acción en lugar de especificar un alias para él?

Realmente agradecería que alguien me proporcione un ejemplo del uso de “Nombre de la acción” en un escenario en el que puede proporcionar un gran beneficio o es mejor usarlo.

Le permite comenzar su acción con un número o incluir cualquier carácter que .net no permita en un identificador. – La razón más común es que le permite tener dos Acciones con la misma firma (vea las acciones Eliminar GET / POST de cualquier controlador con scaffolded)

Por ejemplo: puede permitir guiones dentro de su nombre de acción url http://example.com/products/create-product vs http://example.com/products/createproduct o http://example.com/products/create_product .

 public class ProductsController { [ActionName("create-product")] public ActionResult CreateProduct() { return View(); } } 

También es útil si tiene dos Acciones con la misma firma que deberían tener la misma url.

Un simple ejemplo:

 public ActionResult SomeAction() { ... } [ActionName("SomeAction")] [HttpPost] public ActionResult SomeActionPost() { ... } 

Lo uso cuando el usuario descarga un informe para que puedan abrir su archivo csv directamente en Excel fácilmente.

 [ActionName("GetCSV.csv")] public ActionResult GetCSV(){ string csv = CreateCSV(); return new ContentResult() { Content = csv, ContentEncoding = System.Text.Encoding.UTF8, ContentType = "text/csv" }; } 

Los atributos ActionName se usan para exponer métodos de acción .NET con diferentes nombres al mundo exterior. En las circunstancias siguientes, puede utilizar los atributos de ActionName:

  1. Para SEO (Search Engine Optimization), desea exponer un nombre de acción más significativo en su URL que el nombre del método de acción .NET.

  2. Para evitar problemas relacionados con la sobrecarga de funciones. Supongamos que tiene un nombre de método de acción DELETE, cuyos métodos de acción GET y POST aceptan el mismo parámetro. En este caso, obtendrá un error de tiempo de comstackción. Para resolver el problema, puede cambiar el nombre de su método .NET y, con el atributo ActionName, puede mantener el mismo nombre expuesto.

Para una explicación más detallada, visite el atributo ActionName en ASP.NET MVC

Prueba este código:

 public class ProductsController { [ActionName("create-product")] public ActionResult CreateProduct() { return View("CreateProduct"); } } 

Esta clase representa un atributo que se usa para el nombre de una acción. También permite a los desarrolladores usar un nombre de acción diferente al nombre del método.

También es útil cuando necesita implementar la sobrecarga de métodos.

  public ActionResult ActorView() { return View(actorsList); } [ActionName("ActorViewOverload")] public ActionResult ActorView(int id) { return RedirectToAction("ActorView","Home"); } ` 

Aquí, un ActorView no acepta parámetros y el otro acepta int. El primer método utilizado para ver la lista de actores y el otro se utiliza para mostrar la misma lista de actores después de eliminar un elemento con ID como ‘id’. Puedes usar el nombre de acción como ‘ActorViewOverload’ donde necesites sobrecargar el método.