2014-01-17 53 views
0

我有以下的JavaScript函數來確定給定date是本月的最後一天:調用日期時間在JavaScript

function isLastDayOfMonth(date) { 
    var parts = date.split(' '); 
    var mo = parts[0]; 

    var month = parseInt(parts[0]); 
    var day = parseInt(parts[1]); 
    var year = parseInt(parts[2]); 

    if (day == @DateTime.DaysInMonth(year, month)) { 
     return true; 
    } 

    return false; 
} 

VisualStudio中顯示了一個語法錯誤,這yearmonth不能在當前被發現(在函數調用DaysInMonth。我試圖搞亂@,因爲我不知道這是做什麼,無濟於事Visual Studio建議我啓動DaysInMonth的參數爲:year:然後我假設別的,但我不確定是什麼。任何人都可以幫忙嗎?

+2

服務器代碼在客戶端代碼之前解釋,這就是服務器 - 客戶端模型的工作原理。 – elclanrs

回答

3

@DateTime.DaysInMonth(year, month)是一種服務器端方法。 Javascript運行在客戶端(在用戶的瀏覽器上),因此這兩者不能以您嘗試的方式直接交互。試試下面的JavaScript,而不是

//month is 0 index in javascript aka Jan = 0 
if(day === new Date(year, month+1, 0).getDate()) 

方法最後日期在一個月:https://stackoverflow.com/a/222439/597419

+0

這工作,謝謝。你能解釋爲什麼Date是客戶端(而DateTime不是),還是僅僅是固有的?我真的很新。 – aquemini

+0

'DateTime'是一個.NET對象,'Date'是一個Javascript對象。所有的.NET代碼都在服務器上解釋並在任何Javascript運行之前發送給用戶。這裏是所有Javascript對象的參考http://www.w3schools.com/jsref/ – Danny

0

您是否偶然使用Date()對象?我不確定@DateTime等東西是什麼,但我認爲你想使用Date()for javascript。

1

看來,你是混合的ASP.NET MVC剃刀語法在那裏。你不能運行一個接收javascript參數的c#函數,因爲它們現在只是字符串。

您可以使用剃刀生成部分JavaScript代碼,那很好。但剃刀只是創建一個字符串發送給客戶端。它不是直播的JavaScript代碼。 JavaScript由瀏覽器中的JavaScript引擎解釋。