от
У меня есть кнопка: Включить электронную почту и флажок (который не отмечен) на стороне этой кнопки. Когда я нажимаю кнопку
Turn email on
, она должна вызывать метод действия контроллера, где я должен написать SP, чтобы обновить таблицу электронной почты. Таблица email_ON_OFF_T имеет одно поле: isemailon_off (тип int) .i в нее вставлено значение 0. Таким образом, текст кнопки
Turn email on
станет
turn email off
, и флажок станет установленным. Я пробовал следующий код:
        $(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 голосов
от
Вы можете использовать FromSql или ExecuteSqlCommand для выполнения хранимой процедуры. FromSql может использоваться только для выполнения необработанных SQL-запросов или хранимых процедур для получения данных. Вы не можете использовать его для INSERT / UPDATE / DELETE. Если вы хотите выполнить запросы INSERT, UPDATE, DELETE, используйте команду ExecuteSqlCommand. Возвращает целочисленное значение, которое указывает количество затронутых строк. Вот образец после вашего требования. Надеюсь на помощь, дружище :))
if(!string.IsNullOrWhiteSpace(checkemails))
{
    dataContext.Database
           .ExecuteSqlCommand("Sp_Email_on_off @checkemails", checkemails);
}
    
...