【问题标题】:Maintain the state of checkbox on page Load in MVC在MVC中保持页面加载复选框的状态
【发布时间】:2019-07-10 10:35:55
【问题描述】:

我的问题与页面加载有关。 我有以下代码:

控制器:

public ActionResult Index()
        {
     BD.isEmailON_OFF= db.Email_ON_OFF_T.Select(x=>x.isEmailON_OFF).FirstOrDefault().GetValueOrDefault();
}

[HttpPost]
        public ActionResult CheckEmail(string checkemails)
        {

            //calling Stored Procedure

            if (!string.IsNullOrWhiteSpace(checkemails)|| checkemails=="true" || checkemails=="false")
            {
                var checkemails1 = new SqlParameter("checkemails", checkemails);
                db.Database
                       .ExecuteSqlCommand("EXEC Sp_Email_on_off @checkemails", checkemails1);
            }


            return new JsonResult { };
        }

我有桌子IS_Email_on_OFF_T

我作为 0 插入到 ismailonoff 列

功能:

我已打开电子邮件按钮和复选框。

打开电子邮件----->变成关闭按钮和复选框。

关闭按钮----> 变为未选中的打开按钮和复选框。

到这里为止都正常工作。

打开电子邮件----->变成关闭按钮和复选框。

页面加载(加载页面)

clicking on turn off button and not changing to turn on the button(1st attempt)(ISSUE)

点击关闭按钮(第 2 次),它会改变。

我试过的是:

观看次数:

@{
                if (Model.isEmailON_OFF == 0)
                {
                    <input type="button" value="Turn Email on" class="btn btn-success" id="btnturnemailonoff" />
                            <input type="checkbox" id="Chkemailonoff" style="float:right;" />
                }
                else
                {
                    <input type="button" value="Turn Email off" class="btn btn-success" id="btnturnemailonoff" />
                            <input type="checkbox" id="Chkemailonoff" style="float:right;" checked/>
                }
              }

按钮点击时的 AJAX 调用:

<script type="text/javascript">



    $(document).ready(function () {
               $('#btnturnemailonoff').on('click', function () {    


            var checked = !$(this).data('checked');
            var message = checked ? 'Turn Email ON' : 'Turn Email OFF';
            if (confirm("Do you want to " + message + "? ")) {



                $("#Chkemailonoff").prop('checked', checked);
                $(this).val(checked ? 'Turn Email Off' : 'Turn Email on')
                $(this).data('checked', checked);



                debugger;
                var url = '@Url.Action("CheckEmail", "BillingDetails")';
                $.ajax({
                    url: url,
                    type: "POST",
                    data: { checkemails: checked },
                    dataType: "json",
                    // traditional: true,
                    success: function () {
                        alert("ajax request to server succeed");
                    }
                });
            }//end of if

        });
    });





</script>

SP:

ALTER procedure [dbo].[Sp_Email_on_off]
@checkemails varchar(10)
As
Begin
if(@checkemails='false')
Update Email_ON_OFF_T set isEmailON_OFF=0
else
Update Email_ON_OFF_T set isEmailON_OFF=1

End

【问题讨论】:

  • @chetan...可能是因为选中了您在复选框中放置的内容。所以在按钮单击(关闭电子邮件)上,状态应该为 false,以便打开电子邮件并且未选中复选框,但它是与控制器一样真实......
  • 是的...因为那个而发生...如何克服它?

标签: javascript asp.net model-view-controller


【解决方案1】:

我对 AJAX 调用按钮单击进行了更改,它对我有用。

$(document).ready(function () {
        $('#btnturnemailonoff').on('click', function () {                              
            debugger;
             var checked = $("#Chkemailonoff").prop('checked');
            var message = checked ? 'Turn Email On' : 'Turn Email Off';
            if (confirm("Do you want to " + message + "? ")) {
                $("#Chkemailonoff").prop('checked', !checked);
                $(this).val(message)
                var url = '@Url.Action("CheckEmail", "BillingDetails")';
                $.ajax({
                    url: url,
                    type: "POST",
                    data: { checkemails: !checked },
                    dataType: "json",
                    success: function () {
                        //alert("ajax request to server succeed");
                    }
                });
            }




        });
    });

【讨论】:

  • 哇。你太棒了,我的朋友。抱歉,我今天不查看电子邮件:D
  • @Tomato32...没问题的朋友..:)
  • 你使用Skype吗?这样我们就可以轻松聊天了:D
  • @Tomato32 嘿.. 你能帮我解决这个问题吗? stackoverflow.com/questions/57802489/…
  • 只要在 Skype 上 ping 我 :d。也许我可以更好地帮助你。抱歉,我的朋友,回复晚了。
猜你喜欢
  • 2016-08-23
  • 2015-10-18
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
相关资源
最近更新 更多