2011-07-24 7 views
0

条件付きコンパイラ指令と定数をRazorマークアップで使用することができます。私は私が未満にしようとして条件付きで、これらのディレクティブを使用してJavaScriptのテキストを放出する方法があるかどうかを知りたい:条件付きコンパイル定数を使用してMVC3ビューから出力されるJavaScriptを制御する

@section BodyPanelScript 
{ 
    <script type="text/javascript"> 
     $(function() { 
      $(":password").val(null); 

      // Back up current names of package radio buttons, then make all their names the same for grouping. 
      $("#package-selector :radio[name$='.IsSelected']").each(function() { 
       $(this).attr("oldname", $(this).attr("name")); 
      }); 
      $("#package-selector :radio[name$='.IsSelected']").attr("name", "Package.IsSelected"); 

      // Hook the 'submit' click to restore original radio button names. 
      $("form#register :submit").click(function() { 
       $(":radio[name='Package.IsSelected']").each(function() { 
        $(this).attr("name", $(this).attr("oldname")); 
       }); 
      }); 

     });  
    </script> 
    @{ 
#if AUTO_FILL_REG 
     <text> 
     <script type="text/javascript"> 
      $(function() { 
       $(":password").val("123456"); 
      });  
     </script> 
     </text> 
#endif 
    } 
} 

定数AUTO_FILL_REGが私のデバッグ設定で定義された、とにコントローラを伝えています登録モデルにデフォルト値を設定するので、プロセスをテストするためにフォームを必ず完了する必要はありません。モデルの既存の値はパスワードフィールドで無視されるため、このフィールドに値を入力するJavaScriptを使用します。私はこのJavaScriptを条件付きで出力したいと思いますが、上記のコードのようないくつかの試みでは、文字が実際にレンダリングされ、パスワードが入力されるか、または何も表示されず、ビルド設定に関係なくレンダリングされます。

答えて

2

これは特に優雅な解決策ではありませんが、単純です。このようなシンプルなクラスを作ることができます

public static ConditionalValue { 
    public static bool AUTO_FILL_REG { 
    get { 
#if DEBUG 
     return true; 
#else 
     return false; 
#endif 
    } 
    } 
} 

これをあなたのaspxで参照してください。これは、このプロパティを配置できる場所の一例です。あなたは定数としてもそれを行うことができますが、あなたはその考えを得ます。

+0

私はこれを実際に終わらせましたが、私のMVCApplication、すなわち 'global.asax'で静的プロパティを定義しました。 – ProfK

関連する問題