检查是否选中了复选框 - ASP.NET

7 c# asp.net

我有以下代码:

(some.aspx.cs)

        if(Page.IsPostBack)
        {
        bool apple2 = false;
        bool pizza2 = false;
        bool orange2 = false;
        if (apple.Checked)
            apple2 = true;
        if (pizza.Checked)
            pizza2 = true;
        if (orange.Checked)
            orange2 = true;
        }
Run Code Online (Sandbox Code Playgroud)

(some.aspx)

     <tr>
     <td>Food:</td>
     <td>Apple <input type="checkbox" name="food" id="apple" value="apple" runat="server" />Pizza <input type="checkbox" name="food" id="pizza" value="pizza" runat="server" />Orange <input type="checkbox" name="food" id="orange" value="orange" runat="server" /></td>
 </tr>
Run Code Online (Sandbox Code Playgroud)

现在,我将布尔变量发送到SQL数据库.问题只出现在未经检查的方框中.我的意思是,当你检查一些复选框时,它会将其发送为真(这是正确的)但是当我取消选中它时它保持不变(真实).

另外:为什么太少?这是一个查询...这里没什么特别的

string q = string.Format(@"UPDATE tblUsers SET ......., apple='{8}', orange='{9}' WHERE id='{10}'", ...., apple2, orange2, id);
lib.sql_query(q); // using my sql library...
Run Code Online (Sandbox Code Playgroud)

数据类型是位....我也尝试使用字符串...但没有成功

PS - 我也尝试过Request.Form ["apple"],取消选中工作......但不幸的是检查没有...当我选中复选框时它会抛出一个错误:

Conversion failed when converting the varchar value 'on' to data type bit. 
Run Code Online (Sandbox Code Playgroud)

有人?

小智 7

所以经过很长一段时间的组合和其他东西它工作...没有任何javascripts和隐藏的字段...这是.cs代码

        bool apple2 = (Request.Form["apple"] == "on") ? true : false;
        bool orange2 = (Request.Form["orange"] == "on") ? true : false;
        bool pizza2 = (Request.Form["pizza"] == "on") ? true : false;
Run Code Online (Sandbox Code Playgroud)