ABOUTページがHOMEページ内のリンクであるという事実は、それが子アクションであることを意味するものではありません。実際、MVCの観点からは、それらは同じレベルにあり、階層の幻想を与えるプログラマーとしてのあなたです。ナビゲーションの順序を提供することによって。
今、あなたができることは次のとおりです。
コントローラからアクション メソッドを削除するか、または
次のような単純な無視ルートを記述します。
routes.IgnoreRoute("YourRuleToIgnoreActions");
このルールは、他のルールがトリガーされるのを避けるために、RegisterRoutes の RegisterRoutes メソッドの先頭にある必要があります。
無視ルールを構築するために、このトピックに関する素晴らしい議論があります: http://ardalis.com/IgnoreRoute-in-ASP.NET-Routing-is-Order-Dependent
更新:おそらくこれについて考えすぎですが、私の意見では、モデルはビューの動作を変更するプロパティを持つことができます。これは、アーキテクチャの観点から、すでにビューにいる場合、あなたの懸念は排他的であるためです。プレゼンテーション層で、次のようなものを持つことは完全に有効だと思います:
public class MyReportsModel{
public bool displaySection1 { get; set;}
//other data
}
ビューでは、次の方法でプレゼンテーションを変更できます。
@{
if(@Model.displaySection1){
//display as normal
}
}
もちろん、モデルにデータを入力するときは、必要に応じて各コントローラーでそのプロパティを設定する必要があります。
MyReporstModel thisView = new MyReportsModel();
thisView.displaySection1 = true;
// set all properties necessary to display
// if the controller knows that this partial view won't be displayed then
thisView.displaySection1 = false;
しかし、それはもはや技術的な問題ではなく、アーキテクチャ上の問題です。
それが役に立てば幸い、