2010-07-29 15 views
1

在aspx頁面:<%= %>嵌入JavaScript的IF條件

if (<%= Not Me.ThisVisa.PassportExpirationDate.IsNull %>){ 

返回錯誤:

微軟JScript運行時錯誤: '真' 是不確定的

我嘗試這樣做:

if ("<%= Me.ThisVisa.PassportExpirationDate.IsNull.ToString %>" != "True"){ 

..但我得到一個編譯時錯誤:

Error 5 Option Strict On disallows implicit conversions from 'String' to 'Long' 

幫助!

+0

如果您查看您的html源代碼,第一個代碼段呈現給瀏覽器的內容是什麼? – 2010-07-29 03:16:47

回答

2

什麼:

if (<%= (Not Me.ThisVisa.PassportExpirationDate.IsNull).ToString().ToLower() %>){ 

這將評估布爾條件,並將其轉換爲字符串,但你應該爲小寫,這樣它看起來像JavaScript語法時,它的渲染。

+0

這是對的,但我也會使用一個明確的條件操作符來列出字符串文字,因爲如果在不同的本地化中運行,此代碼仍然可能不會輸出預期的內容。 – 2010-07-29 03:21:54

+0

@Joel:你會推薦做一些類似於在那裏添加引號(刪除'ToLower()')並將其與'Boolean.TrueString'比較嗎?這會滿足本地化問題嗎? – 2010-07-29 03:41:50

0

擺脫多餘的空間。更改爲:

如果( 「<%= Me.ThisVisa.PassportExpirationDate.IsNull.ToString%>」= 「真」!){

0

你缺少的ToString()方法括號。

更新:SRY,是我不好

+1

他在做VB.NET。不需要括號。 – kbrimington 2010-07-29 03:22:53

3

考慮邏輯移動到服務器腳本。這樣做會減少你在頁面上發送多少JavaScript。

<% If Not Me.ThisVisa.PassportExpirationDate.IsNull Then %> 

// JavaScript Goodness 

<% End If %> 
+0

甚至更​​好,如果這只是調用鏈接的.js文件中的方法 – 2010-07-29 03:31:36

+0

如果將「IF」條件評估爲FALSE,這將導致Javascript塊不被釋放或將無條件地釋放Javascript?我認爲這是爲了讓前者發生。 – ChadD 2010-08-01 17:13:27

+0

@Velika:意圖和效果。在ASP.NET中,在標記頁上,<% %>的內容在服務器上執行。它採用了經典的ASP風格,並重新獲得了MVC框架的一些流行,但它在ASP.NET WebForms中也同樣適用。 – kbrimington 2010-08-01 17:18:56

相關問題