私のビューでWeb APIからURLを取得するにはどうすればよいですか? (msdn-blogから)属性ルーティングを使用してWeb Apiを表示するURLを作成します
例:
[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);
}
EDIT
私はUrl.RouteUrl(new { controller = ..., action = ...})
のようなメソッドを使用し、それは私はそれが/reviews/...
が見える...あなたはリンクを生成しようとしていますMVCアクションであり、Web APIではありません。 'httproute'はあなたの場合のようにMVCではなくWeb APIコントローラへのリンクを生成するために使われます。 –
これは間違ったコピー/貼り付けでした。間違いなくWeb APIコントローラで、MVCコントローラではありません。 –