2011-01-11 10 views
3

私は、モデルデータをjavascript変数に取得し、それをintとして使用して値を比較する必要があります。しかし、私はモデルデータを文字列として取得する方法しか見つけられません。それ以外の場合、コンパイラは不満を持ちます。ASP.NET MVCモデルデータのJavascript int変数?

JavaScriptのint変数としてmaxとtaskBudgetHoursを取得するにはどうすればよいですか?

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#taskForm").submit(function (e) { 
      var taskBudgetHours = $('#BudgetHours').val(); 
      var max = '<%: Model.Project.RemainingBudgetHours %>'; 

      alert(taskBudgetHours); 
      alert(max); 

      if (taskBudgetHours <= max) { //This doesn't work, seems to treat it as strings... 
       return true; 
      } 
      else { 
       //Prevent the submit event and remain on the screen 
       alert('There are only ' + max + ' hours left of the project hours.'); 
       return false; 
      } 
     }); 
    }); 
</script> 
+0

私はあなたのコードを少し編集しました。最も注目に値するのは、 'return false'を実行するとe.preventDefault()を実行する必要がないということです。 – Domenic

答えて

4

maxについて、その周りに引用符を入れないでください:

var taskBudgetHours = parseInt($('#BudgetHours').val(), 10); 

注基数の使用:taskBudgetHoursについては

var max = <%: Model.Project.RemainingBudgetHours %>; 

は、ビルトインのJavaScript parseInt関数を使用しますparseIntのパラメータ。これにより、例えば、

parseInt("020") === 16 // true! 
+0

Okですが、maxは有効な構文ですか?私はReSharperから、引用符を削除すると表現が期待されていると言っています。 – Anders

+0

JavaScriptをC#でASP.NETと混在させていますが、ReSharperがそれを理解するのに十分なほどスマートになると思いますか?とんでもない!より重要なテストは、ブラウザで実行すると機能するのでしょうか? – Domenic

+0

よろしくお願いします。 – Anders

0

私は、ページの読み込みに隠しフィールドにModel.Project.RemainingBudgetHoursを割り当て、あなたがtaskBudgetHoursでそうであるように、その値を取得しよう:進として解析されているよう"020"。 また、わかりませんが、あなたは試してみることができます:

var max = parseInt('<%: Model.Project.RemainingBudgetHours %>') 
関連する問題