2016-06-08 3 views
0

Ich habe das folgende Stück Code in meinem Controller:Der Versuch, RESTful zu bekommen in MVC (.NET f/x 4.5.2)

[HttpGet] 
[Route("Clone/{sessionId:int}")] 
public ActionResult CloneContinue(int sessionId) 
{ 
    // Resume a saved Work Session... 
    var response = GetCachedCurrentWorkSession(sessionId); 

    if (response.Status >= (int) SessionStatuses.Started) 
    { 
     // ---==[ BELOW THIS IS FAILING ]==--- 
     return RedirectToAction("Assembly", "ProductReuse", new { sessionId = response.SessionId }); // <<<=== THIS IS FAILING ===<<< 
     // ---==[ ABOVE THIS IS FAILING ]==--- 
    } 
    return View("Clone", response); 
} 

Wenn er ausgeführt wird, es sendet es an:
http://localhost/My.Web/ProductReuse/Assembly?sessionId=50

Ich erwartete:
http://localhost/My.Web/ProductReuse/Assembly/50.

Irgendwelche Ideen, warum es das macht?

Die Aktion ich bin Umleitung:

[HttpGet] 
[Route("Assembly/{sessionId:int}/{showResults:bool?}")] 
public ActionResult Assembly(int sessionId, bool showResults = false) 
{ 
    var response = GetCachedCurrentWorkSession(sessionId); 
    response.ShowResults = showResults; 
    return View(response); 
} 

Mein RouteConfig.cs wie folgt aussieht:

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     routes.MapMvcAttributeRoutes(); 
     AreaRegistration.RegisterAllAreas(); 

     routes.MapRoute("Default", "{controller}/{action}/{id}", 
      new {controller = "Home", action = "Index", id = UrlParameter.Optional} 
      ); 
    } 
} 

Gedanken?

Antwort

0

Doh!

Changed die return RedirectToAction(...) zu:

return RedirectToRoute("GetAssembly", new {userWorkSessionId = response.UserWorkSessionId}); 
Verwandte Themen