これが私のセットアップの例です:
public class UserController : Controller
{
public ActionResult Index(int? id) { ... }
[HttpPost]
public ActionResult DoSomething(int id) { ... }
public ActionResult Search([params]) { ... }
}
そして、これらのルートを介してそれらにアクセスできるようにしたい:
/app/User/{id}
/app/User/DoSomething/{id}
/app/User/Search/
このようにルートを設定しようとしましたが、に移動/app/User/Search/
または投稿しようとすると/app/User/DoSomething/
、Index
代わりにアクションがヒットします。
routes.MapRoute(
name: "UserWithoutIndex",
url: "User/{id}",
defaults: new { controller = "User", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
これどうやってするの?上記のルートの前に独自のルートで特定の各アクションを指定するだけでうまくいくと思いますがUserWithoutIndex
、複数のアクションがあり、コントローラーの各アクションに固有のルートを作成する必要はありません。