Флажок не установлен после обратной публикации - PullRequest
1 голос
/ 26 мая 2020

Я работаю над устаревшим кодом встроенных веб-форм. Я добавил флажок, который установлен по умолчанию. Проблема в том, что когда флажок снят, он по-прежнему переключается на отмеченный при отправке формы. Скажем, нет обработчиков событий страницы.

В 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

JavaScript:

function CheckYardSelection()
{
    var yardCheckbox = document.getElementById('excludeYard');

    if (!yardCheckbox.checked) 
        document.getElementById('inYard').value = "";
    else
        document.getElementById('inYard').value = "Y";
}

C#:

<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>

1 Ответ

1 голос
/ 26 мая 2020

Вы не публикуете свой полный код, но если вы реализуете все таким образом, у вас больше не должно возникать этой проблемы:

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>

Ниже приведен код:

public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!String.IsNullOrEmpty(Request.Form["inYard"]))
        {
            if (Request.Form["inYard"].ToString() == "Y")
            {
                excludeYard.Value = Request.Form["inYard"].ToString();
                excludeYard.Checked = true;
                // query += " AND IC.NewWellPad <> 'YARD'";
            }
        }
    }
}

По умолчанию. js

function CheckYardSelection() {
    var yardCheckbox = document.getElementById('excludeYard');

    if (!yardCheckbox.checked)
        document.getElementById('inYard').value = "";
    else
        document.getElementById('inYard').value = "Y";
}
...