コントローラーとアクションを次のように設計したいと思います。
「StaticPage(string page)」と呼ばれるコントローラーごとに 1 つのアクションがあります (そこから派生する BaseController を作成することを考えましたが、ここでは、コントローラーとしての「Suite」についてのみ説明します)。
このアクションは、ほとんどが HTML コードを含み、モデルを含まないビューを返します。したがって、20 個の単純なビューに対して 20 個のアクションを作成する代わりに、1 つのアクションでそれらを管理し、パラメーターで区別したいと考えています。
しかし、同じコントローラーで、モデルを含むビューを返し、より複雑でデータベース関連のことを行うアクションを持たせたいと思います。最初は、次のルートを考えました (注: このシナリオでは、「製品」という領域が存在します)。
context.MapRoute(
"Product_default",
"Product/{controller}/{action}",
new { action = "index"}
);
context.MapRoute(
"StaticPage_Route",
"Product/{controller}/{page}",
new { action = "StaticPage", page = UrlParameter.Optional
);
では、View TechnicalSpecification.cshtmlとTrivialPage.cshtmlを取得したとします。
/製品/スイート/技術仕様
アクション「TechnicalSpecification」を検索して見つける必要がありますが、試してみると
/製品/スイート/TrivialPage
また、最初にアクション「TrivialPage」を検索する必要があります。しかし、それが見つからない場合は、ページと呼ばれるパラメーターとして処理する必要があります (上記のルートのように)。
しかし、私は本当に知りません、この権利を管理する方法。カスタム ActionFilter 属性を設定せずに、OnActionExecuted(...) で何かをチェックし、「StaticPage」アクションを呼び出す方法はありますか?