ASP. NET Флажок не устанавливает значение bool - PullRequest
1 голос
/ 07 апреля 2020

Прежде всего, спасибо за вашу помощь. Я довольно новый.

Это должно быть очень просто, но я потратил часы, пытаясь понять это. У меня есть форма на мой взгляд. Форма заполняет все правильно - кроме флажка. Я исследовал и исследовал и попробовал много различных предложений онлайн. Независимо от того, что я пытаюсь, форма устанавливает одно и то же значение для отмеченных и непроверенных.

Просмотр:

<div class="checkbox">
    <label>
         <input id="lunch45" type="checkbox" value="true">45 minute lunch
    </label>
</div>

jQuery:

<script>
    $(document).ready(function () {
        $("#Lunchsubmit-form").click(function () {
            var model = {};
            model.EmployeeID = Number($("#lunchemployeeId").val());
            model.LunchTime = Date($('#lunchtimeId').val());
            model.PositionID = Number($("#lunchposition").val());
            model.LongerLunch = Boolean($('#lunch45').val());
            console.log("model", model);
            $.ajax({
                type: "HttpPost",
                url: "/Home/CreateLunch",
                dataType: 'json',
                data: JSON.stringify(model),
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    if (data.success)
                        window.location.href = "/Home/Index";
                    else
                        alert("Error: Lunch not submitted");
                },
                error: function () {
                    alert("Error: Lunch not submitted");
                }
            });
        });
    });
</script>

Модель:

public class Lunch
{
    public int LunchID { get; set; }
    public int EmployeeID { get; set; }
    public DateTime LunchTime { get; set; }
    public int? PositionID { get; set; }
    public bool LongerLunch { get; set; }

    public virtual Employee Employee { get; set; }
    public virtual Position Position { get; set; }
}

Еще раз спасибо. Я знаю, как все просто, но ничего не получается.

1 Ответ

1 голос
/ 07 апреля 2020

Попробуйте использовать 1 и 0, прочитайте о JS Булева функция здесь

Проверка

alert(Boolean(Number("0")));
alert(Boolean(Number("1")));

Тогда

  <input id="lunch45" type="checkbox" value="0" />
  ...
  model.LongerLunch = Boolean(Number($('#lunch45').val()));

Или используйте флажок непосредственно

model.LongerLunch = $('#lunch45').is(":checked");

Или, может быть, вам нужно проверить, проверяется, прежде чем получить значение

<input id="lunch45" type="checkbox" value="0" >
<input id="lunchx" type="checkbox" value="1" checked>

alert($('#lunch45').is(":checked"));
alert($('#lunchx').is(":checked"));
...