2009-07-10 57 views
1

我有幾個函數是用JS編寫的,它們在我的網站上進行錯誤檢查。在一個實例中,如果DB中的某個實例爲真,我想禁用兩個檢查。將C#變量傳遞給JS的最佳方式

我有這樣的事情在aspx.cs

if (this.exemptcheck == true) { 
    // could set a variable to pass or whatever is optimal here 
} 

然後在JS我有這樣的功能在我的.aspx

if (NotANumberCheck(item.GetMember("TotalSpace").Value, 'Space must be Numeric') == false) { return false; } 

我不希望這種檢查運行如果this.examptcheck返回true。什麼是最佳的方式來做到這一點?我聽說把變量放在不可見的字段中,但看起來並不理想。任何建議,將不勝感激。

感謝

+0

旁註:通常不鼓勵檢查布爾值是否等於true或false。一個布爾值已經是一個布爾值。至少在C#和JS中,它應該不是問題。 – OregonGhost 2009-07-10 15:04:59

回答

0

只需註冊您的js函數只有當你的條件爲真,則不需要檢查變量:

C#代碼:

if (this.exemptcheck == true) { 
    Page.ClientScript.RegisterStartupScript(Page.GetType(), "KEY", "/* code of your JS function that handle the true case */", true); 
} 
0

你可以寫在其中設置一個變量爲真/假頁面的腳本部分,然後檢查在JS變量後。

2

在aspx中,設置一個名爲ExemptCheck的成員變量。後來,在JS中,執行此操作:

var exemptCheck = <% Response.Write(ExemptCheck.ToString()) %>; 

這會爲您提供一個JS變量,其值與C#變量的值相同。

+0

我有這個在我的aspx.cs 私人無效pageSetup(EventArgs參數){ 布爾exemptCheck;如果(dss.ExemptCheck == true){ exemptCheck = true; } } 我放在JS 功能onInsert以下(項目){ VAR exemptCheck = <%回覆於(exemptCheck.ToString()); %>; } 這給了我下面的錯誤 編譯器錯誤信息:CS0103:在目前情況下 這是一個範圍問題,還是我做別的事情錯不存在名稱「exemptCheck」? – Splashlin 2009-07-10 15:16:44

0

只有當this.examptcheck爲true時,纔可以Response.Write()javascript代碼。

0

我結束了使用下面的命令來設置值aspx.cs代碼

Page.ClientScript.RegisterStartupScript(this.GetType(),「」,「var stackedUnknownExemptCheck = true;」,true);