jquery
  • asp.net-mvc
  • url-action
  • 2016-05-24 3 views 0 likes 
    0

    Я работаю над проектом MVC, и я пытался отправить некоторые параметры моему контроллеру в JQuery с использованием @Url.Action.Ошибка при отправке параметров контроллеру через @ Url.Action в JQuery

    HTML код:

    <button class="btn btn-white btn-sm demo1" data-id='@item.TeamID'>Delete</button> 
    

    JQuery Код:

    $(document).ready(function() { 
         $('.demo1').click(function (event) { 
          swal({ 
           title: "Are you sure?", 
           text: "You will not be able to recover this team!", 
           type: "warning", 
           showCancelButton: true, 
           confirmButtonColor: "#DD6B55", 
           confirmButtonText: "Yes, delete it!", 
           closeOnConfirm: false 
          }, function() { 
           var data = event.data; 
           var id = data.id; 
           var url = '@Url.Action("Delete", "Teams", new { id = "__param__" })'; 
           window.location.href = url.replace('__param__', encodeURIComponent(id)); 
    
           swal("Deleted!", "Your team has been deleted.", "success"); 
          }); 
         }); 
        }); 
    

    Однако метод удаления в контроллере команд не срабатывает. Я что-то упускаю?

    UPDATE: кнопка HTML помещается внутри foreach цикла:

    @foreach (var item in Model) 
    { 
        <tr> 
          <td> 
           @Html.DisplayFor(modelItem => item.TeamName) 
          </td> 
          <td> 
           @Html.DisplayFor(modelItem => item.TeamInits) 
          </td> 
          <td> 
           @Html.ActionLink("Edit", "Edit", new { id = item.TeamID }, new { @class = "btn btn-white btn-sm" }) 
           <button class="btn btn-white btn-sm demo1" data-id='@item.TeamID'>Delete</button> 
          </td> 
         </tr> 
    } 
    
    +0

    Вы связываете обработчик событий с классом 'demo3' – Satpal

    +0

    Извините, я сделал ошибку при копировании кода. На самом деле я создаю обработчик событий с демо-классом класса. Я обновлю вопрос – Hanady

    ответ

    1

    Использование HTMLElement.dataset собственности или .data() читать пользовательские data-* приставкой значение атрибута.

    $(document).ready(function() { 
        $('.demo1').click(function (event) {    
         var id = this.dataset.id; 
         //OR 
         var id = $(this).data('id'); 
    
         //Rest of the code 
         swal(); 
        }); 
    }); 
    
    +0

    'var id = $ (this) .data ('id');' работал для меня, но id возвращается как null в контроллер. Обратите внимание, что кнопка html помещается внутри цикла foreach. Проверьте обновленный вопрос. – Hanady

    +0

    Забудьте о моем комментарии. Он работает хорошо. Благодарю. – Hanady

    0

    Обычно я использую трюк под следующим кодом. Когда что-то пойдет не так.

    Добавьте код Global.asax.cs и поставьте отладчик внутри метода, чтобы он срабатывал при возникновении какого-либо исключения.

    protected void Application_Error(object sender, EventArgs e) 
    { 
        Exception exception = Server.GetLastError(); 
        string ex = exception.Message; // Here you will get to know what is going wrong 
    } 
    

    Сообщение об исключении или трассировка стека предоставят достаточно информации для исправления ошибок.

    Несмотря на то, что если его запрос от ошибок страницы JQuery/Razor Html, у вас будет достаточно информации.

    Надеюсь, это поможет !!!

    Смежные вопросы