2011-01-11 76 views
3

我需要將模型數據轉換爲javascript變量,並將其用作int來比較值。但我只能弄清楚如何將模型數據作爲字符串來獲取,否則編譯器會抱怨。來自ASP.NET MVC模型數據的Javascript int變量?

那麼我怎樣才能得到最大和taskBudgetHours作爲int變量在Javascript中?

<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

我編輯你的代碼了一下;最值得注意的是,如果你做'返回false',你不需要做`e.preventDefault()` – Domenic 2011-01-11 23:11:46

回答

4

max,不要把引號圍繞它:

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

taskBudgetHours,使用內置的JavaScript功能parseInt

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

注意使用基數參數parseInt;這防止例如"020"爲被解析爲八進制:

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

好吧,但是對於max來說它是有效的語法嗎?我收到來自ReSharper的投訴,聲稱如果我刪除引號,它期待一個表達式... – Anders 2011-01-12 00:06:39

0

我想嘗試的Model.Project.RemainingBudgetHours分配給隱藏字段在頁面加載,然後當你與taskBudgetHours做得到它的價值。 也不太確定,但你可以嘗試:

var max = parseInt('<%: Model.Project.RemainingBudgetHours %>')