Wie kann ich die URL von Web-API aus meiner Sicht bekommen?Construct url in Sicht für Web Api mit Attribut-Routing
Beispiel (aus der msdn-blog):
[RoutePrefix("reviews")]
public class ReviewsController : ApiController
{
// eg.: /reviews
[Route]
public IHttpActionResult Get() { ... }
// eg.: /reviews/5
[Route("{reviewId}")]
public IHttpActionResult Show(int reviewId) { ... }
// eg.: /reviews/5/edit
[Route("{reviewId}/edit")]
public IHttpActionResult Edit(int reviewId) { ... }
}
Jetzt möchte ich "/ reviews/bearbeiten" aus meiner Sicht konstruieren, wie kann ich das tun?
Ich habe versucht, eine kleine Erweiterungsmethode zu erstellen, aber es erfordert, dass ich jeder Route einen tatsächlichen "RouteName" gebe. Gibt es eine Methode, die ich verwenden kann (wie in MVC), wo ich nur den Controller und die Aktion übergeben kann?
@Url.Action("Edit", "Reviews)
Die Methode ich jetzt benutze (mit Route) auch erlaubt mir nicht, ganze Zahlen als Parameter zu verwenden (es sei denn ich einen Standardwert übergeben). Wenn ich alle meine Routen benennen muss, wie kann ich eine Routen-URL erstellen, aber meine Parameter im "Daten" -Bereich meiner Anfrage übergeben?
Aktuelle Methode:
public static string ResolveWebApiRoute(this UrlHelper urlHelper, string routeName, object routeValues = null)
{
var newRouteValues = new RouteValueDictionary(routeValues);
newRouteValues.Add("httproute", true);
return urlHelper.RouteUrl(routeName, newRouteValues);
}
EDIT
Als ich Methoden wie Url.RouteUrl(new { controller = ..., action = ...})
, Er leitet direkt zu dieser Aktion (zB new { controller = "Reviews", action = "Show"} --> /reviews/show
, Whilest ich es /reviews/...
Sieht aus wie es einige Verwirrung ist ... Sie versuchen, einen Link zu erzeugen zu einer MVC-Aktion und NICHT Web-API. 'httproute' wird verwendet, um Links zu einem Web-API-Controller zu generieren und nicht wie in Ihrem Fall MVC. –
Das war eine falsche Kopie/einfügen, es ist definitiv ein Web-API-Controller, kein MVC-Controller, danke für das zeigen –