2015-07-02 23 views
2

我有一個複選框,它應該去的代碼隱藏文件的方法工作。 這是我的aspx代碼:我在asp.net複選框不與代碼隱藏文件

<input name="fullscreen_chbx" type="checkbox" id="fullscreen_chbx" onclick="fullscreen_chbx_Click" runat="server"/> 

這是我隱藏的代碼。代碼應該可以工作,但它甚至不執行該方法。

protected void fullscreen_chbx_Click(object sender, EventArgs e) 
{ 
    bool fullscreen = false; 


    if (fullscreen == false) 
    { 
     InputSimulator.SimulateKeyPress(VirtualKeyCode.F11); 
    } 
    else 
    { 
     InputSimulator.SimulateKeyPress(VirtualKeyCode.F11); 


    } 

aspx文件中總是存在這樣的錯誤:JavaScript中的運行時錯誤:「fullscreen_chbx_Click」未定義。 爲什麼javascript出現錯誤?

+0

您的'fullscreen_chbx_Click'被視爲HTML中的JS函數。這是因爲你沒有使用服務器端控件。 –

+0

這不是它的工作原理。你不能直接調用JavaScript的後端方法。 –

+0

@MattRowland但我用runat =「server」。它不工作嗎? – aha364636

回答

3

您不使用服務器端控制,因此onclick事件試圖把火關JavaScript事件。

你可以改變你的代碼使用服務器端控制,例如

<asp:CheckBox id="fullscreen_chbx" OnCheckedChanged="fullscreen_chbx_Click" runat="server"/> 

注意沒有爲服務器端控件中沒有onclick事件處理程序,所以你需要使用OnCheckedChanged。您也可能想要將AutoPostBack="True"添加到您的控件中,以便事件立即觸發。

<asp:CheckBox id="fullscreen_chbx" OnCheckedChanged="fullscreen_chbx_Click" runat="server" AutoPostBack="True" /> 

然後這將觸發您的服務器事件。如果你想添加一個客戶方的事件這一點,那麼你可以隨時添加OnClientClick="somefunction();"

+0

這是我的代碼現在,但它仍然是相同的錯誤 – aha364636

+0

使用'OnCheckedChanged' –

+0

asp:複選框是正確的,但我沒有包括autopostback – aha364636

0

的AutoPostBack =複選框控件的「真」

事件只有當與值指定複選框的AutoPostBack屬性「真實」加註。

+0

不工作,仍然是相同的錯誤 – aha364636

+0

你不使用asp控制,所以它不會工作,你需要觸發onclient點擊屬性來調用javascript funtion –

0

從這個

<input name="fullscreen_chbx" type="checkbox" id="fullscreen_chbx" onclick="fullscreen_chbx_Click" runat="server"/> 

更改代碼這個

<asp:CheckBox id="fullscreen_chbx" OnClick="fullscreen_chbx_Click" runat="server"/> 
1

這是因爲你使用的HTML控制並不是服務器端控制。

要使用複選框在服務器端,您需要添加下面的代碼。

<asp:CheckBox ID="fullscreen_chbx" runat="server" AutoPostBack="True" 
oncheckedchanged="fullscreen_chbx_CheckedChanged" /> 

protected void fullscreen_chbx_CheckedChanged(object sender, EventArgs e) 
{ 
     if (fullscreen_chbx.Checked) 
     { 

     } 
     else 
     { 

     } 

}