javascript
  • c#
  • .net
  • eval
  • 2015-07-10 131 views 0 likes 
    0

    對於熟悉Javascript的人來說,這可能非常簡單,但是在將eval作爲參數傳遞時調用函數時遇到問題。我正在嘗試創建一堆動態複選框。我的文字顯示效果很好,但複選框給我帶來麻煩。問題是,我傳遞給複選框的值是一個字符串(「true」或「false」)而不是bool。如何將Eval()傳遞給Javascript函數

    <asp:CheckBox runat="server" AutoPostBack="True" Checked='<%# Eval("Value") %>' Text='<%# Eval("DisplayName") %>'></asp:CheckBox> 
    

    我還創建了一個簡短的JavaScript函數將其轉換爲Boolean

    function ConvertToBoolean(value) 
    { 
        if (value == "true") 
        { return true;} 
        if (value == "false") 
        { return false;} 
    } 
    

    我不是偉大的JavaScript,但我什麼都試過了我能找到的SO。不知道爲什麼它不適合我。以下是我所嘗試的:

    Checked='<%# Eval("Value") %>' 
    Checked="'<%# Eval("Value") %>'" 
    Checked='<%# "ConvertToBoolean(" + Eval("Value") + ");" %>' 
    Checked='<%# "ConvertToBoolean(\"" + Eval("Value") + "\");" %>' 
    Checked='<%# Eval("Value", "javascript:ConvertToBoolean({0});") %>' 
    Checked="ConvertToBoolean('<%# Eval("Value") %>')" 
    

    我在這裏誤解了一些根本性的東西嗎?有沒有辦法做到這一點?

    +0

    什麼是「價值」?一個C#變量?也''ConvertToBoolean'可能只是'return(value ==「true」);' – JohnKiller

    +3

    我沒有看到使用'Eval'的意思 – JohnKiller

    +0

    @JohnKiller - 對不起,我應該指定:它是一個C#變量,它是從包含其他屬性(如「DisplayName」)的對象列表綁定到DataList。 (除了複選框外,還有其他一些項目也被綁定,請告訴我,如果這是相關的,我也可以添加該代碼)。問題是,我綁定的對象有一個「value」而不是bool的字符串。 – user2480201

    回答

    0
    <asp:CheckBox runat="server" AutoPostBack="True" Checked='<%# Eval("Value")=="true" %>' Text='<%# Eval("DisplayName") %>' /> 
    

    此代碼獲取在服務器端執行,並轉換成HTML,像

    <input type="checkbox" checked="checked"> ..... 
    

    Ofcourse ASP需要評估你的Eval("Value")=="true",以決定是否需要輸出checked或不

    相關問題