ビューでWeb APIから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) { ... }
}
ビューで「/reviews/edit」を作成したいのですが、どうすればよいですか?
少し拡張メソッドを作成しようとしましたが、すべてのルートに実際の「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
、リダイレクトしたいのに/reviews/...