通常の CRUD 操作を持つコントローラーのルートを設定したいのですが、詳細アクションで URL に「詳細」が表示されないようにしたいと考えています。Stackoverflow には、このタイプのルーティングが構成されているようです。
http://stackoverflow.com/questions/999999/
http://stackoverflow.com/questions/ask
このアナロジーを使用すると、私のルートは現在次のようになります。
http://stackoverflow.com/questions/Details/999999/
Details
次のルートを追加することで、削除できました。
routes.MapRoute("Q1", "questions/{id}",
new { controller = "Questions", action = "Details" });
ただし、コントローラーで他のアクションをプルアップすると (たとえば/questions/new
、この例の場合)、id を解析できないと不平を言っています。
他のすべてのアクション (MapRoute "items/create"、"items/delete" など) を Global.asax.cs に手動で入力する必要がないように、ルートを設定する方法はありますか? 基本的に、次のような2番目のルートが必要です。
routes.MapRoute("Q2", "questions/{action}",
new { controller = "Questions", action = "Index" });
{id}
...そして、整数に一致し、それが文字列である場合、ルーティング エンジンにルート Q1 を使用{action}
させます。これは可能ですか?