ここでstackoverflowで多くのソリューションを見つけましたが、まだ回答を投稿していないため(asp.net mvcの初心者であるため)、少しお返しすると思いました:
サイトのマスター ページによってレンダリングされる部分ビューとしてメニュー システムを実装したので、メニューのコントローラーで "選択した" メニュー項目を強調表示して、ユーザーがサイトのどこにいるかを把握できるようにしたいと考えました。問題は、メニューがレンダリングされているとき、現在のルートデータがメイン コンテンツ ページではなく、メニュー自体のものであるということでした。したがって、メニュー コントローラーはどのメニュー項目を強調表示するかをどのように知るのでしょうか? 私の解決策は非常にきちんとしていると思いましたが、おそらく他の提案があるでしょう:
public class NavController : Controller
{
private string parentAction { get; set; }
private string parentController { get; set; }
protected override void OnActionExecuting(ActionExecutingContext ctx)
{
base.OnActionExecuting(ctx);
parentAction = ctx.ParentActionViewContext.Controller.ControllerContext.RouteData.Values["action"].ToString();
parentController = ctx.ParentActionViewContext.Controller.ControllerContext.RouteData.Values["controller"].ToString();
}
このメニュー生成クラスは、「parentAction」と「parentController」を使用して、「親」ページ、つまりユーザーがマスターのメインコンテンツ部分で見ているページに対応するメニュー項目を強調表示できるようになりました。