如何從我的視圖中的web api獲取url?爲屬性路由的Web Api構建url url
示例(從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) { ... }
}
現在我想建立在我看來, 「/評論/編輯」,我該怎麼辦呢?
我試着創建一個小擴展方法,但它需要我給每個路由一個實際的「RouteName」。有沒有我可以使用的方法(如在MVC中),我可以通過控制器和操作?
@Url.Action("Edit", "Reviews)
我現在使用的方法(與RouteName)也不允許我使用整數作爲參數(除非我傳遞一個默認值)。如果我確實需要命名我的所有路由,我怎樣才能創建一個路由url,但將我的參數傳遞給我的請求的「數據」部分?
電流法:
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);
}
編輯
當我使用的方法類似Url.RouteUrl(new { controller = ..., action = ...})
,它直接重定向到行動(如new { controller = "Reviews", action = "Show"} --> /reviews/show
,whilest我希望它重定向到/reviews/...
看起來有些混亂......你想生成一個鏈接到MVC操作和NOT Web API。 'httproute'用於生成指向Web API控制器的鏈接,而不是您的情況。 –
這是一個錯誤的複製/粘貼,它絕對是一個Web API控制器,而不是一個MVC控制器,謝謝指出 –