1. ホーム
  2. asp.net-mvc

Asp.Net MVC:URLのダッシュを有効にするには?

2023-09-05 08:26:24

質問

URLの単語をダッシュで区切りたいのですが、どうすればいいですか? そこで、代わりに

/MyController/MyAction

私は好きです。

/My-Controller/My-Action

これは可能か?

どのように解決するのですか?

ActionName属性をこのように使用することができます。

[ActionName("My-Action")]
public ActionResult MyAction() {
    return View();
}

次に、ビューファイルを "My-Action.cshtml"(または適切な拡張子)と呼ぶ必要があることに留意してください。また、すべてのHtml.ActionLinkメソッドで、"my-action"を参照する必要があります。

コントローラには、このような簡単な解決策はありません。

編集:MVC5へのアップデート

グローバルにルートを有効化します。

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapMvcAttributeRoutes();
    // routes.MapRoute...
}

MVC5 では、Attribute Routing はプロジェクトに吸収されました。使用できるようになりました。

[Route("My-Action")]

アクションメソッドについて。

コントローラの場合は RoutePrefix 属性を指定すると、そのコントローラ内のすべてのアクションメソッドに適用されます。

[RoutePrefix("my-controller")]

を使うことの利点の一つは RoutePrefix を使う利点のひとつは、URL パラメータが任意のアクションメソッドに渡されることです。

[RoutePrefix("clients/{clientId:int}")]
public class ClientsController : Controller .....

スニップ...

[Route("edit-client")]
public ActionResult Edit(int clientId) // will match /clients/123/edit-client