いくつかの領域(基本グリッドマスター/詳細タイプシステム)を備えたアプリケーションの作業を始めたばかりです。MVC(特に4)の優れたルーティング機能を利用することを検討していますが、「うまくいきません」。私は推測します。
現在定義されている唯一のルートは基本ルートです。
routes.MapRoute("Default",
"{controller}/{action}/{id}",
new { controller = "Account", action = "Index", id = UrlParameter.Optional }
);
これは問題ありません。定義したエリアで機能するので、ユーザーがどこにいるかを認識し、ユーザーがいる場所/エリアに応じて適切なコントローラーにルーティングする必要があると思います。
今、私は処理できる新しいルートを設定しようとしています
/someController/someAction/{statusName}
具体的には次のようなものです。
/OrderManager/List/New
と
/OrderManager/List/Viewed
ここで、「新規」は「新規」ステータスであり、アクションシグネチャは次のようになります。
public ActionResult List(string statusName)
Idの代わりに「statusName」を識別するデフォルトのルートの下に新しいルートを追加できると想定していましたが、もちろん、Hはルーティングメカニズムが次の違いをどのように認識するのでしょうか。
/ controller1 / action1 / 15
/ controller2 / action2 / new
次の形式で「静的」ルートを追加してみました
routes.MapRoute("Default",
"ControllerName/ControllerAction/{statusName}",
new { statusName = UrlParameter.Optional }
);
その1つのルートだけを「ハイジャック」して、それを使って何か特別なことをすることができると思いましたが、役に立つことを知るために、ルーターは最初の試合で停止しますか?とにかく、それがこの問題に対処するための間違った方法だったと思います。
だから今、私は次のようなものに到達するというアイデアを経験しています:
/somecustomroutename/somesortValue
元。/ OrderManagerList / viewNew
これらのルートは基本的に「エイリアス」になります。次のルートを追加するとうまくいくと思っていました。
routes.MapRoute("Default_List",
"OrderManagerList/{statusName}",
new {controller="OrderManager", action="List", statusName= UrlParameter.Optional }
);
OrderManagerコントローラーの関連アクション:
public ActionResult List(string statusName)
何をしようとしても、引数がnullであるか、「リソースが見つかりません」
コントローラに対応するビューファイルが必要であることはわかっていますが、ここでは問題ではありません。問題は、ルーティングを理解しようとする試みです。
だから私の質問..基本的に、MVC(4)のルーティングについて何が欠けていますか?私のような単純な人が理解するためのいくつかの良い記事でさえ?
私の理解; ルートを定義し、それを「エンドポイント」にマッピングします。ただし、マシンが行っている仮定を理解していないと思います。
とにかく、さらに説明/編集が必要な場合はお知らせください。
前もって感謝します。