asp.net 我很难将复选框的值传递到控制器并将其存储在数据库中

c2e8gylq  于 2023-02-26  发布在  .NET
关注(0)|答案(1)|浏览(97)

我将与您分享我的_MaintenancePMAalertstructionGetData.cshtml(Partial view)编码部分(主要是html + jquery),模型部分-〉名为tblMoldData.cs的文件,以及控制器的actionResult。我想发送真值到控制器,并在选中复选框时将其保存在数据库中,如果未选中复选框,则发送假值。
“我是编码新手,我相信我很快就能编写出正确的代码来实现我的目标。但是,我意识到我的代码中缺少了一些重要的东西,使我无法实现预期的结果。您能否提供一些指导或帮助,帮助我确定并解决此问题?”

_维护PM警报指令获取数据.cshtml

<div class="col-md-5" style="padding-right: 2px;">
                            <div class="NA">
                                <input type="checkbox" style="width: 11%;" value="@Model.MoldData.IsPM1NA" id="IsPM1NA" class="form-control" />
                                <label class="NACheckbox" for="IsPM1NA">N/A</label>
                            </div>
                        </div>

Jquery脚本代码

$(document).ready(function () {
        $('#IsPM1NA').on('change', function () {
            SaveMoldDetails();
        });
    });
      function SaveMoldDetails() {  
         debugger;
         var obj = new Object();
         obj.MoldDataID = @Model.MoldData.MoldDataID;

        var PM1NA = false;
        var PM1NA = $("#IsPM1NA").val(false);
        if ($("#IsPM1NA").prop("checked")) {
            PM1NA = $("#IsPM1NA").val(true);
        }
        obj.PM1NA = PM1NA;


        $.ajax({
            url: '/MaintenanceTracking/SaveMoldMaintenance1',
            type: 'Post',
            data: obj,
            success: function () {
            },

            error: function () {
            }

        })
    }

模型部件

public class MaintenanceScheduleCommon
{
    public tblMoldData MoldData { get; set; }
}

tblMoldData.cs文件

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Moldtrax.Models
{
    public class tblMoldData
    {
[Key]
        public int MoldDataID { get; set; }
        public int? CompanyID { get; set; }
        public int? CustomerID { get; set; }
        public bool IsPM1NA { get; set; }
    }
    public class MainMoldData
    {
        public IEnumerable<tblMoldData> TBLList { get; set; }
        public tblMoldData TblDetails { get; set; }
    }
}

控制器-〉维护跟踪控制器. cs

public ActionResult SaveMoldMaintenance1(tblMoldData model)
        {
            int CID = ShrdMaster.Instance.GetCompanyID();
            var tblPM = db.TblMoldData.Where(x => x.MoldDataID == model.MoldDataID && x.CompanyID == CID).FirstOrDefault();
            if (tblPM != null)
            {

                
                tblPM.IsPM1NA = model.IsPM1NA;

                db.SaveChanges();

                sd.UpdatePMAlertCaptions(CID, model.PM1Caption, model.PM2Caption, model.PM3Caption, model.PM4Caption);
            }
            return Json("", JsonRequestBehavior.AllowGet);
        }

我尽了最大努力向您提供所有细节,如果我跳过了任何内容,请让我知道。我已经添加了'IsPM 1 NA'作为数据库表(tblMoldData)中的列名,添加了数据类型'bit'。我正在使用c#asp.netframworks,Visual Studio 2017和SSMS 2016。
我已经提到了所有的代码,我可以工作。请帮助,如果有人可以。谢谢

4urapxun

4urapxun1#

改为

obj.IsPM1NA = PM1NA;

从这个

obj.PM1NA = PM1NA;

此问题与Web应用程序中的复选框行为不正确有关。2此问题被确定为负责处理复选框的JavaScript代码中的打字错误。
最初,代码有一个名为“obj”的对象,该对象有一个名为“PM1NA”的属性,该属性应该表示复选框的状态。但是,由于拼写错误,代码没有引用正确的复选框控制器,导致意外行为。
为解决此问题,已通过将属性名称从“PM1NA”更改为“IsPM1NA”修改代码,这将允许代码正确引用控制器并检索复选框的状态。进行此更改后,复选框开始正常工作,表明问题已解决。

相关问题