MVC 5 で属性ルーティングを設定しようとしています。デフォルト アクションを持つルートがありますが、そのアクションがテンプレートにまったくありません。ここが私の旧ルートです。
routes.MapRoute(null,
"Article/{id}/{*path}",
new { controller = "Article", action = "Index" , id = UrlParameter.Optional, path = UrlParameter.Optional }
);
これにより、パス内のアクションにインデックスを使用する必要なく、/Articles/1/test のルートが満たされます (つまり、/Articles/Index/1/test)。
また、デフォルトのマップ ルート ..../Article/Items によってキャッチされる別のメソッドもあります。
私の問題は、MVC 5 の新しい属性ルーティングを使用してこのルートをセットアップする方法がわからないことです。以下のコードは機能しますが、各メソッドにルートを追加する必要はありません。すべてのメソッドを満たすクラスの先頭に何かを配置することを望んでいましたが、Index メソッドに何か他のものを追加するだけです。
[RoutePrefix("Article")]
public class ArticleController: BaseController
{
[Route("{id?}/{*path?}")]
public ActionResult Index(int id, string path)
{
}
[Route("Items")]
public ActionResult Items()
{
}
[Route("TestMethod")]
public ActionResult TestMethod()
{
}
}
以下のようなものを期待していました。問題は、パスの前にインデックスを配置する必要があることです.../Index/1/test.
[RoutePrefix("Article")]
[Route("{action=Index}")]
public class ArticleController : BaseController
{
Route[("{id?}/{*path?}")]
public ActionResult Index(int id, string path)
{
}
public ActionResult Articles()
{
}
public ActionResult TestMethod()
{
}
}