Javascript 回发后未选中复选框

Javascript 回发后未选中复选框,javascript,c#,asp.net,webforms,inline-code,Javascript,C#,Asp.net,Webforms,Inline Code,我正在处理一些遗留的内联Web表单代码。我添加了一个默认设置的复选框。问题是,如果复选框未选中,则在提交表单时仍会翻转为选中。每个页面都没有页面事件处理程序 在JavaScript中,如果我设置了一个警报,它会将值显示为空,这在复选框未选中时是正确的。但是,在提交表单时,复选框始终恢复为选中状态 标记: <input type="hidden" id="inYard" name="inYard" runat="server" /> <input type='checkbox'

我正在处理一些遗留的内联Web表单代码。我添加了一个默认设置的复选框。问题是,如果复选框未选中,则在提交表单时仍会翻转为选中。每个页面都没有页面事件处理程序

在JavaScript中,如果我设置了一个警报,它会将值显示为空,这在复选框未选中时是正确的。但是,在提交表单时,复选框始终恢复为选中状态

标记:

<input type="hidden" id="inYard" name="inYard" runat="server" />
<input type='checkbox' id="excludeYard" name='excludeYard' onclick="CheckYardSelection()" 
    runat="server" />Include Items in Yard
function CheckYardSelection()
{
    var yardCheckbox = document.getElementById('excludeYard');

    if (!yardCheckbox.checked) 
        document.getElementById('inYard').value = "";
    else
        document.getElementById('inYard').value = "Y";
}
<script runat="server">
...
    if(!String.IsNullOrEmpty(Request.Form["inYard"]))
    {
        if (Request.Form["inYard"].ToString() == "Y")
        {
            excludeYard.Value = Request.Form["inYard"].ToString();
            excludeYard.Checked = true;
        }
    }
...
</script>
C#:

<input type="hidden" id="inYard" name="inYard" runat="server" />
<input type='checkbox' id="excludeYard" name='excludeYard' onclick="CheckYardSelection()" 
    runat="server" />Include Items in Yard
function CheckYardSelection()
{
    var yardCheckbox = document.getElementById('excludeYard');

    if (!yardCheckbox.checked) 
        document.getElementById('inYard').value = "";
    else
        document.getElementById('inYard').value = "Y";
}
<script runat="server">
...
    if(!String.IsNullOrEmpty(Request.Form["inYard"]))
    {
        if (Request.Form["inYard"].ToString() == "Y")
        {
            excludeYard.Value = Request.Form["inYard"].ToString();
            excludeYard.Checked = true;
        }
    }
...
</script>

...
如果(!String.IsNullOrEmpty(Request.Form[“inYard”]))
{
if(Request.Form[“inYard”].ToString()=“Y”)
{
excludeYard.Value=Request.Form[“inYard”].ToString();
excludeYard.Checked=true;
}
}
...

您不会发布完整的代码,但如果您以这种方式实现所有内容,则不应再出现此问题:

aspx文件:

<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebForms._Default" %>

<script src="Default.js" language="javascript" type="text/javascript"></script>

<form runat="server">
    <input type="hidden" id="inYard" name="inYard" runat="server" />
    <input type='checkbox' id="excludeYard" name='excludeYard' onclick="CheckYardSelection()" runat="server" />

    <input type="submit" value="Post" />
</form>

请让我们知道c代码写在哪里?在脚本块中加载页面。正如我所说,没有页面事件处理程序。您是否有特定的理由使用
input
而不是
asp:checkbox
?这是传统的内联代码,没有使用asp.NET控件。我删除了checked和value属性,结果仍然相同。还尝试使用一个隐藏变量在C#中切换逻辑,但没有效果-JS中的隐藏值集在C#中变为空。将更新问题,但问题仍然存在。@IrishChieftain:请注意我答案的最后一段。这很重要。您必须在页面的JavaScript代码的
Load
事件中设置复选框选中状态(value=“Y”或不基于您当前的状态),您能给我一个代码片段吗?我不能100%确定您所说的JS代码加载事件是什么意思。@IrishChieftain在执行任何进一步操作之前,让我们检查并确保您的选中复选框也正确发送到服务器。如果不是这样的话,我会发布我的想法。没有代码隐藏文件,但是你的解决方案是内联的。谢谢你的帮助,阿曼!