Domanda

Qualcuno può dirmi perché dovrei usare NonAction?Intendo dire che ho un modulo con diversi valori di invio: Aggiorna, Elimina o Inserisci.Poiché tutti i pulsanti di invio hanno la stessa forma in comune, sto cambiando il valore di invio all'interno del controller e agisco di conseguenza.

In questo modo:

public ActionResult asd(string submitButton){
     switch(submitButton){
         case "Insert":
             return Insert();
         // bla bla bla
     }
}

[NonAction]
public ActionResult Insert(){
    // some code inside here
    return View();
}

Ancora una volta, perché dovrei usare NonAction invece di qualcosa di simile:

public void Insert(){
    // some code inside here
}

Altri suggerimenti

Vale la pena notare che la necessità di utilizzare [NonAction] si applica solo ai metodi pubblici.I metodi protetti e privati non vengono trattati come azioni.Poiché i tuoi metodi Update / Delete / Insert sono aiutanti per asd(), un metodo privato sarebbe più appropriato per il tuo scenario:

public ActionResult asd(string submitButton){
    switch(submitButton){
        case "Insert":
            return Insert();
        // bla bla bla
    }
}

ActionResult Insert(){
    // some code inside here
}

Se non si utilizza l'attributo [NOWACTION], qualcuno può chiamare direttamente la tua azione invece di dover passare attraverso la funzione "ASD"

Lettura dell'articolo di Haack

Qualsiasi metodo pubblico in una classe controller è richiamabile tramite URL.

A volte potrebbe essere necessario evitarlo.Ad esempio, se implementi un'interfaccia e potresti non voler chiamare quel metodo pubblico, puoi contrassegnarlo come NonAction

public interface IEmployee
{
 void Save(Employee e);
 bool Validate(Employee e);
}

public class EmployeeController:Controller, IEmployee
{
  public void Save(Employee e){
  }

  [NonAction]
  public void Validate(Employee e){
  }
}

Ho appena utilizzato [NonAction] nella nostra API web, per decorare una serie di metodi controller (endpoint) perché abbiamo deciso dell'ultimo minuto di posticipare la consegna degli endpoint specifici.

Quindi è utile, se vuoi evitare di esporre un endpoint API, ma vuoi comunque conservare l'implementazione per dopo.

Quindi ho utilizzato questo attributo e mi ha fatto risparmiare molto tempo.

Lo rimuoverò nella prossima versione e sarà semplicemente lì!

Attributo di nonzione effettua un'azione non accessibile dalla barra di navigazione.Ad esempio, se si dispone di un'azione che elimina gli elementi nel database, è necessario aggiungere l'attributo NonAction per renderlo non accessibile dagli utenti.

In primo luogo, pensa ad un ActionResult semplicemente come a un particolare tipo di costrutto restituito da MVC, che fornisce una particolare comodità in termini di modo in cui ActionResult può essere gestito internamente all'interno del framework MVC.Quindi il fatto che qualcosa sia un ActionResult non significa necessariamente " dovrebbe essere disponibile pubblicamente ".Infatti, qualsiasi metodo pubblico in un controller MVC verrà trattato come un metodo di azione, indipendentemente dal fatto che restituisca o meno un ActionResult .

Quindi, il semplice fatto di avere un tipo restituito che non è un ActionResult non impedirà necessariamente che quel metodo venga esposto come azione disponibile pubblicamente che può essere chiamata tramite unURL.

Potrebbero esserci molte ragioni per cui non vuoi esporre un metodo come un'azione che può essere invocata tramite un URL, e nel caso in cui vuoi "proteggerti" da questo, è quando usi [NonAction '] attributo.

Questo indica che un metodo del controller non è un metodo di azione.Esempio: [NonAction] public void IndexTest () {// Do some thing} questo è un attributo molto utile quando la visibilità del metodo del controller non può essere modificata in private.

È un attributo utilizzato sui metodi definiti dai modificatori di accesso pubblico.In realtà MVC Framework tratta tutti i metodi pubblici come URL, ma nel caso in cui non lo desideri, devi decorare un metodo con l'attributo non action.La stessa cosa può essere ottenuta rendendo privato il metodo.

Di seguito viene fornito un esempio di attributo NonAction. http://yogeshdotnet.com/non-action-attribute-in-mvc/

Se non si desidera richiamare alcuni metodi di azione, è necessario contrassegnarlo con un attributo [NonAction] o rendendolo privato

public ActionResult Index(){
    return View();
}

[NonAction]
public ActionResult Countries(List<string>countries){
    return View(countries);
}

puoi copiare il codice e incollarlo e vedere il risultato.grazie

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top