2011-01-11 5 views
3

모델 데이터를 자바 스크립트 변수로 가져와 int 값으로 사용하여 값을 비교해야합니다. 하지만 모델 데이터를 문자열로 가져 오는 방법 만 알아낼 수 있습니다. 그렇지 않으면 컴파일러가 불평합니다.ASP.NET MVC 모델 데이터의 Javascript int 변수?

그래서 max 및 taskBudgetHours를 자바에서 int 변수로 가져올 수 있습니까?

<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 %>; 

가 내장 된 자바 스크립트 parseInt 기능을 사용 에 대한 매개 변수; 이것은 예를 들어 같은 "020" 8 진수로 해석되고 :

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

좋습니다. 그러나 최대 값은 유효한 문법입니까? 나는 ReSharper로부터 인용문을 제거하면 식을 기대한다고 말합니다. – Anders

+0

JavaScript를 사용하여 ASP.NET과 C#을 섞어서 ReSharper가 충분히 똑똑하다고 생각하십니까? 안돼! 더 중요한 테스트는 브라우저에서 실행할 때 작동합니까? – Domenic

+0

큰 도움을 주셔서 감사합니다! – Anders

0

난 당신이 taskBudgetHours와 마찬가지로 값을 얻을 다음 페이지로드에 숨겨진 필드에 Model.Project.RemainingBudgetHours를 할당하려고합니다. 또한 잘 모르겠지만 시도해 볼 수 있습니다.

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