Получение значения кнопки отправки из вызова Ajax

#ajax #asp.net-core-mvc #form-submit

#ajax #asp.net-core-mvc #форма-отправить

Вопрос:

Значение кнопок отправки всегда равно нулю в действии.

Что мне нужно изменить, чтобы узнать, какая кнопка отправки была нажата?

 <form id="actionInvitation">
                    <div>
                        <ul>
                            <li>
                                @Model.TeamInviteBy
                            </li>
                        </ul>
                    </div>       
                    <input type="submit" name="actionBtn" id="acceptBtn" value="Accept Invitation" />
                    <input type="submit" name="actionBtn" id="declineBtn" value="Decline Invitation" />
                </form>


$('#actionInvitation').submit(function (e) {
        e.preventDefault();
        var formData = new FormData($('#actionInvitation')[0]);
        $.ajax({
            url: '@Url.Action("ActionInvitation", "Home")',
            type: 'post',
            cache: false,
            processData: false,
            contentType: false,
            data: formData,
            success: function (data) {
                $("#invitationActionMessage").append('Invitation Accepted');
            }
        });
    });

//Action
public async Task<IActionResult> ActionInvitation(UserViewModel userViewModel, string acceptBtn, string declineBtn)
  

Комментарии:

1. Привет @Ryn901, если мой ответ вам полезен, вы можете пометить его как ответ, это будет полезно людям, у которых позже возникнет такая же проблема.

Ответ №1:

Ваш formData файл не будет содержать объекты, которые вам нужно передать.

Вы можете изменить свой код, как показано ниже:

 <form id="actionInvitation">
<div>
    <ul>
        <li>
            @Model.TeamInviteBy
            <input type="hidden" name="TeamInviteBy" value="@Model.TeamInviteBy">
        </li>
    </ul>
</div>
<input type="submit" name="actionBtn" onclick="Send(event,this)"  value="Accept Invitation" />
<input type="submit" name="actionBtn" onclick="Send(event,this)"  value="Decline Invitation" />
</form>
@section scripts{ 
<script>
    function Send(ev,el) {
        ev.preventDefault();
        var data = $("input[name='TeamInviteBy']").val();
        var value = $(el).val();
         $.ajax({
            url: '@Url.Action("ActionInvitation", "Home")',
            type: 'post',
            contentType: "application/x-www-form-urlencoded; charset=utf-8",
            data: { TeamInviteBy: data, actionBtn: value},
                success: function (data) {
                $("#invitationActionMessage").append('Invitation Accepted');
                }
                });
    }
</script>
}
  

Экшен:

  public async Task<IActionResult> ActionInvitation( UserViewModel userViewModel , string actionBtn)
    {
      if(actionBtn="Accept Invitation")
       {
        //...
       }
       else
       {
       }
    }
  

Результат:
введите описание изображения здесь