如何在Mvc中基于按钮单击(更改按钮的文本)来选中和取消选中复选框?

时间:2019-07-04 16:41:43

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

我有一个按钮:打开“电子邮件”,并在该按钮的侧面选中该复选框。

当我单击Turn email on按钮时,它应该调用控制器的操作方法,我必须在其中编写SP来更新电子邮件表。

Email_ON_OFF_T表具有一个字段:isemailon_off(int类型)。我在其中插入了值0。

因此,Turn email on按钮的文本将变为turn email off,并选中复选框。

我尝试了以下代码:

    <div class="col-md-8 form-group" style="text-align:right;">

                    <input type="button" value="Turn Email ON" class="btn btn-success" id="btnturnemailonoff" />
                </div>
                <div class="col-md-2 form-group">
                    <input type="checkbox" id="Chkemailonoff" />
                </div>

调用按钮的Ajax代码:

    $(document).ready(function () {
                    $('#btnturnemailonoff').on('click', function () {
                        //var prices = [];
                        //$('#Chkemailonoff').each(function () {

                        //    prices.push($(this).attr("value"));
                        //});
                        var checked = !$(this).data('checked');
                        $("#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");
                            }
                        });
                    });
                });

我正在从Ajax将数据(视图)传递给Controllers动作方法。

    [HttpPost]
            public ActionResult CheckEmail(string checkemails)
            {

                //how to call Stored Procedure
                return new JsonResult { };
            }

我写了以下SP:

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

    End

我受到打击的地方是Stored procedure.How to write and execute Sp in Controllers action Method.,这是我在MVC中尝试做的第一个任务。我是Mvc的新手。 如何使用Mvc实现呢?

我们将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:2)

您可以使用 FromSql ExecuteSqlCommand 来执行存储过程。

FromSql仅可用于执行原始SQL查询或存储过程以获取数据。您不能将其用于INSERT / UPDATE / DELETE。如果要执行INSERT,UPDATE,DELETE查询,请使用ExecuteSqlCommand。它返回整数值,指示受影响的行数。

以下是您所要求的样品。希望对您有帮助,我的朋友:))

if(!string.IsNullOrWhiteSpace(checkemails))
{
    dataContext.Database
           .ExecuteSqlCommand("Sp_Email_on_off @checkemails", checkemails);
}