2010-05-21 2 views
0

j'ai un procédé de commande:Un procédé de commande qui appelle une méthode différente sur le même contrôleur

public ActionResult Details(int id) 
    { 
     Order order = OrderFacade.Instance.Load(id); 
     return View(order); 
    } 

qui est utilisé pour 95% des invocations possibles. Pour l'autre 5% j'ai besoin de manipuler la valeur de id avant de passer à la façade. Je voudrais créer une méthode séparée dans ce même contrôleur qui exécute cette manipulation, puis appelle cette méthode (Détails). A quoi ressemblerait la signature de cette méthode?

Quelle est la syntaxe pour appeler la méthode Details principale?

public ??? ManipulatorMethod(int id) 
{ 
    [stuff that manipulates id] 

    [syntax to call Details(manipulatedID)] 
} 

MNY thx

+0

Est-ce que ManipulatorMethod est toujours appelé, alors 5% du temps fait quelque chose avant de rediriger? – CRice

Répondre

1
public ActionResult ManipulatorMethod(int id) 
{ 
    //[stuff that manipulates id] 
    int _id = id++; 

    //[syntax to call Details(manipulatedID)] 
    return RedirectToAction("Details", new { id = _id }); 
} 

// en supposant que {id} existe sur la route (généralement dans la route par défaut)

0

Si vous appelez la méthode de manipulation directement comme une action sur le contrôleur vous pouvez faire ceci:

public ActionResult ManipulatorMethod(int id) 
{ 
    // Do something to id 
    return Details(id); 
} 

Si tout l'accès sera par l'action Détails alors vous peut faire ceci:

public ActionResult Details(int id) 
{ 
    if(IdNeedsManipulation(id)) 
     id = ManipulateId(id); 

    return View(id); 
} 

private int ManipulateId(int id) 
{ 
    // Do something to id 
    return id; 
} 

private bool IdNeedsManipulation(int id) { return ...; } 
Questions connexes