2011-08-11 22 views
6

Estoy construyendo una interfaz fluida y me gustaría llamar el código de abajo fuera de mi control ...llamando retorno RedirectToAction ("Actividad") fuera de control

return RedirectToAction("Activity"); 

¿Cómo voy a diseñar este método? Tengo:

public FluentCommand RedirectOnSuccess(string url) 
    { 
     if (IsSuccess) 
      ;// make call here... 

     return this; 
    } 

Nota: IsSuccess se establece aquí:

public FluentCommand Execute() 
     { 
      try 
      { 
       _command.Execute(); 
       IsSuccess = true; 
      } 
      catch (RulesException ex) 
      { 
       ex.CopyTo(_ms); 
       IsSuccess = false; 
      } 
      return this; 
     } 

llamar a mi interfaz fluida:

var fluent = new FluentCommand(new UpdateCommand(param,controller,modelstate) 
.Execute() 
.RedirectOnSucess("Actionname"); 

Respuesta

4

Se puede almacenar una instancia de la HttpContextBase como un campo dentro de su la interfaz fluida y cuando necesita redirigir:

var rc = new RequestContext(context, new RouteData()); 
var urlHelper = new UrlHelper(rc); 
context.Response.Redirect(urlHelper.Action(actionName), false); 
+0

Gracias, ya paso el controlador y lo guardo como un campo y simplemente usé _controller.HttpContext. – Haroon

+0

Por curiosidad uso la sobrecarga: var urlHelper = new UrlHelper (rc); pasar datos en ruta? p.ej. taskid = 34 – Haroon

+0

@Haroon, puede usarlo así: 'urlHelper.Action (actionName, new {id = taskid})' –

Cuestiones relacionadas