web-dev-qa-db-fra.com

But de ActionName

Quel est l'avantage de définir un alias pour une méthode d'action utilisant l'attribut "ActionName"? Je ne vois vraiment pas grand avantage à donner à l'utilisateur la possibilité d'appeler une méthode d'action avec un autre nom. Après avoir spécifié l'alias, l'utilisateur peut appeler la méthode d'action uniquement à l'aide de l'alias. Mais si cela est nécessaire, pourquoi l'utilisateur ne change-t-il pas le nom de la méthode d'action plutôt que de spécifier un alias pour celle-ci?

J'apprécierais vraiment que quiconque puisse me fournir un exemple d'utilisation de "ActionName" dans un scénario offrant des avantages considérables ou une utilisation optimale. 

75
Hasan Fahim

Il vous permet de commencer votre action avec un numéro ou d'inclure tout caractère que .net ne permet pas dans un identifiant. - La raison la plus courante est que cela permet d'avoir deux actions avec la même signature (voir les actions GET/POST Delete de tout contrôleur échafaudé)

Par exemple: vous pouvez autoriser des tirets dans votre action url nom http://example.com/products/create-product vs http://example.com/products/createproduct ou http://example.com/products/create_product

public class ProductsController {

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

}
120
Buildstarted

C'est également utile si vous avez deux actions avec la même signature qui devraient avoir la même URL.

Un exemple simple:

public ActionResult SomeAction()
{
    ...
}

[ActionName("SomeAction")]
[HttpPost]
public ActionResult SomeActionPost()
{
    ...
}
56
Carlos Muñoz

Je l'utilise lorsque l'utilisateur télécharge un rapport afin qu'il puisse ouvrir facilement son fichier csv directement dans Excel.

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

Les attributs ActionName sont utilisés pour exposer les méthodes d'action .NET avec des noms différents au monde extérieur. Dans les circonstances ci-dessous, vous pouvez utiliser les attributs ActionName:

  1. Pour le référencement (Search Engine Optimization), vous souhaitez exposer dans votre URL un nom d'action plus significatif que le nom de la méthode d'action .NET.

  2. Pour éviter les problèmes liés à la surcharge de fonctions. Supposons que vous avez un nom de méthode d'action DELETE, dont les méthodes d'action GET et POST acceptent le même paramètre. Dans ce cas, vous obtiendrez une erreur de compilation. Pour résoudre le problème, vous pouvez renommer votre méthode .NET et avec l'attribut ActionName, vous pouvez toujours conserver le même nom exposé.

Pour une explication plus détaillée, visitez l'attribut ActionName dans ASP.NET MVC

6
Ranganatha

Essayez ce code:

public class ProductsController
 {

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

}
2
Chary

Cette classe représente un attribut utilisé pour le nom d'une action. Il permet également aux développeurs d'utiliser un nom d'action différent du nom de la méthode.

1
Pradeep Yadav

Il est également utile lorsque vous devez implémenter une surcharge de méthode.

 public ActionResult ActorView()
        { 

            return View(actorsList);
        }


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

Ici, un ActorView n'accepte aucun paramètre et l'autre accepte int . La première méthode utilisée pour afficher la liste des acteurs, l’autre, permet d’afficher la même liste d’acteurs après la suppression d’un élément dont l’ID est id. Vous pouvez utiliser le nom de l'action comme "ActorViewOverload" partout où vous avez besoin d'une surcharge de méthode.

0
Hrishikesh T T

Sélecteurs d'action: Le sélecteur d'action est l'attribut qui peut être appliqué aux méthodes d'action. Il aide le moteur de routage à sélectionner la méthode d'action appropriée pour traiter une requête particulière. MVC 5 inclut les attributs de sélecteur d’action suivants:

  • ActionName
  • Non action
  • Verbes d'action

ActionName: L'attribut ActionName nous permet de spécifier un nom d'action différent du nom de la méthode. Prenons l'exemple suivant.

public class StudentController : Controller
{
     //1.
     [ActionName("find")]
     public ActionResult GetById(int id)
     {
         return View("GetById");
     }

     //2.
     [ActionName("BadRequest")]
     public ActionResult Error()
     {
         return View("Error");
     }

     //3.
     [ActionName("students-list")]
     public ActionResult StudentsList()
     {
      return View("StudentsList");
     }
 }

L'attribut [ActionName] présente de nombreux avantages, tels que:

  1. Vous pouvez personnaliser le nom de votre méthode et lui attribuer le nom de votre choix, comme dans l'exemple ci-dessus.
  2. Vous pouvez utiliser cet attribut si vous souhaitez masquer votre vrai nom de méthode à l'utilisateur comme ci-dessus.
  3. Visual Studio génère une erreur lorsque vous utilisez une hyphen "-" dans le nom de la méthode, utiliser des minuscules dira "Naming rule violation" et ainsi de suite. Dans de tels cas, cet attribut est d'une grande aide.

Remarque: La méthode View () recherche par défaut un nom de méthode/action correspondant et nous transmettons donc le nom de la méthode réelle en tant que paramètre lors du retour de la vue.

0
Tahir77667