0

私は MVC4 を使用していますが、ViewBag.MenuLevel="twostage"; を宣言するのではなく、質問があります。私のコントローラーの各 ActionResult で、コントローラーごとに一度宣言できますか? たとえば、現在、コントローラーごとに 40 個の ActionResults があるとしましょう。変数を何度も宣言する必要があるのはばかげているようです。そのため、単純なものが欠けていると確信しています。

プレゼンテーションに影響を与えるために、何らかの形でビューでそれを消費できるようにする必要があります。考え?モデル?MVCは初めてなので、優しくしてください!;)

基本的に、各セクション (コントローラー) がフロントエンドで異なる背景色を表示するようにしたいので、セクション/コントローラーを html の ID に出力して、css 経由で制御できるようにします。

乾杯。

4

3 に答える 3

3

毎回 ViewBag データを設定する必要がありますが、これはアーキテクチャの避けられない機能です。ただし、コントローラーに適用される属性を使用して、コントローラー コードの観点から、もう少し簡潔にすることができます。

public class ViewBagAttribute : ActionFilterAttribute
{
    public void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var controller = filterContext.Controller;

        controller.ViewBag.MenuLevel = "twostage";
    }

    public void OnActionExecuted(ActionExecutedContext filterContext) { }
}

その属性をコントローラーに適用すると、OnActionExecutingすべての Action メソッドに対して自動的に呼び出されるため、各 Action メソッドに ViewBag コードを明示的に追加する必要はありません。

于 2012-08-30T12:30:48.073 に答える
0

BaseController共有フィールドと値を定義するクラスを作成できます。特定のコントローラーはすべて基本クラスから継承します。

于 2012-08-30T12:19:56.187 に答える
0

独自のコントローラー クラスを作成し、そこからすべてのコントローラーを継承します。ViewBagこのコントローラー クラスのすべてのビューに渡す必要がある変数を に入力します。

于 2012-08-30T12:20:24.197 に答える