Как установить и снять флажок на основе нажатия кнопки (с изменением текста кнопки) в Mvc? - PullRequest
1 голос
/ 04 июля 2019

У меня есть кнопка: Включить электронную почту и флажок (который не отмечен) на стороне этой кнопки.

Когда я нажимаю кнопку Turn email on, она должна вызывать метод действия контроллера, где мне нужно написать SP для обновления таблицы электронной почты.

В таблице Email_ON_OFF_T есть одно поле: isemailon_off (тип int) .i в нее вставлено значение 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 Ответ

2 голосов
/ 05 июля 2019

Вы можете использовать FromSql или ExecuteSqlCommand для выполнения хранимой процедуры.

FromSql можно использовать только для выполнения необработанных запросов SQL или хранимых процедур для получения данных.Вы не можете использовать его для вставки / обновления / удаления.Если вы хотите выполнить запросы INSERT, UPDATE, DELETE, используйте команду ExecuteSqlCommand.Возвращает целочисленное значение, которое указывает количество затронутых строк.

Вот пример, соответствующий вашим требованиям.Надеюсь на помощь, друг мой :))

if(!string.IsNullOrWhiteSpace(checkemails))
{
    dataContext.Database
           .ExecuteSqlCommand("Sp_Email_on_off @checkemails", checkemails);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...