Метод контроллера, который вызывает другой метод на том же контроллере - PullRequest
0 голосов
/ 21 мая 2010

У меня есть метод контроллера:

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

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

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

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

    [syntax to call Details(manipulatedID)]
}

mny thx

Ответы [ 2 ]

1 голос
/ 21 мая 2010
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 голосов
/ 21 мая 2010

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

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 ...; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...