2010-05-21 2 views
0

У меня есть метод контроллера:Способ контроллер, который вызывает другой метод на том же контроллере

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

, который используется для 95% возможных вызовов. Для остальных 5% мне нужно манипулировать значением id перед тем, как перейти к фасаду. Я хотел бы создать отдельный метод внутри этого же контроллера, который выполняет эту манипуляцию, а затем вызывает этот (подробный) метод.

Как будет выглядеть подпись этого метода? Каков синтаксис вызова основного метода «Сведения»?

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

    [syntax to call Details(manipulatedID)] 
} 

MNy ТНХ

+0

Значит, ManipulatorMethod всегда вызывает вызов, затем 5% времени что-то делают перед перенаправлением? – CRice

ответ

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

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

// предполагая, что {ID} существует на маршруте (обычно в маршрут по умолчанию)

0

Если вы вызываете метод манипулятором непосредственно в действии на контроллер вы можете сделать это:

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

Если все доступ будет через действие «Детали», то вы может сделать это:

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 ...; } 
Смежные вопросы