2017-02-14 1 views
0

Ich habe sehr einfache Frage über Route-Konfigurationen in Web APIs.Route Config Challenge mit zusätzlichen Parameter

Mein Ziel ist es, zwei Methoden zu einer zu verschmelzen.

[HttpGet] 
[Route("foo/bar")] 
public HttpResponseMessage TestMethod() 
{ 
    //TODO: Implement 
    return new HttpResponseMessage(HttpStatusCode.OK); 
} 



[HttpGet] 
[Route("foo/bar/{element}")] 
public HttpResponseMessage AnotherTestMethod(string element) 
{ 
    //TODO: Implement 
    return new HttpResponseMessage(HttpStatusCode.OK); 
} 

Code oben eingefügt funktioniert.

Natürlich habe ich einige Tutorials zum Anpassen von Routen gelesen, aber ich war nicht erfolgreich. Das String-Element ist optional.

Dies ist, was ich in RouteConfig versucht:

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

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "MyController", action = "DefaultTestMethod", id = UrlParameter.Optional } 
     ); 

     routes.MapRoute(
      name: "PropertyDefinitions", 
      url: "foo/bar/{element}", 
      defaults: new { controller = "MyController", action = "TestMethod", element = UrlParameter.Optional} 
     );   
    } 
} 

Danke für jeden Hinweis oder Hilfe.

Antwort

1

Sie können den Standardwert für element zuweisen. Und deklarieren Sie im Parameter route die Variable als Nullable. Dies behandelt den Parameter als optional.

[Route("foo/bar/{element?}")] 
public HttpResponseMessage TestMethod(string element = null) 
+0

Danke! Es war so einfach :-). – Mozartos

0

Warum verwenden Sie nicht nur eine Methode wie folgt.

[HttpGet] 
[Route("foo/bar/{string element}")] 
public HttpResponseMessage TestMethod(string element) 
{ 
//TODO: Implement 
return new HttpResponseMessage(HttpStatusCode.OK); 
} 

Als Sie bekannt, unabhängig von den Parameter des Elements gesetzt sind oder nicht gesetzt ist, wird die Testmethod() aufgerufen werden.

+0

Vielen Dank für Ihre Hilfe. Aber es funktioniert nicht :-(. Oder ich sehe Ihren Standpunkt wahrscheinlich nicht. – Mozartos

Verwandte Themen