кнопка отклонения всегда обновляет первую запись проблемы - PullRequest
0 голосов
/ 06 февраля 2020

Я сделал просмотр с записями, и каждая из них приняла и отклонила кнопку. При отклонении, появляется всплывающее окно для написания почему. проблема здесь заключается в том, что всякий раз, когда я нажимаю кнопку отклонения для любой записи, она принимает идентификатор и статус первой записи и type="button". Я попытался изменить тип кнопки отклонения type="submit", она работает, но идет прямо к контроллеру, не показывая всплывающее окно. буквально, я схожу с ума. Что я делаю не так?

  <tbody>
                            @for (int i = 0; i < Model._Requests.Count(); i++)
                            {


                                <tr>
                                    <td>
                                        @Html.HiddenFor(x=>Model._Requests[i].Request_ID , new {Name="theId" })
                                    </td>

                                    <td>
                                        @Html.DisplayFor(x => Model._Requests[i].Account_Name)
                                    </td>
                                    <td>
                                        @Html.DisplayFor(x => Model._Requests[i].LOB)
                                    </td>
                                    <td>
                                        @Html.DisplayFor(x => Model._Requests[i].Operation_Date)
                                    </td>
                                    <td>
                                        @Html.DisplayFor(x => Model._Requests[i].Employee_no)
                                    </td>

                                    <td>
                                        @Html.DisplayFor(x => Model._Requests[i].Fulfillment_Rate)
                                    </td>

                                    @if (Model._Requests[i].Status == false)
                                    {
                                        <td>
                                            <span name="badge" class="badge badge-warning" id="pend">pending training</span>

                                        </td>
                                    }
                                    @if (Model._Requests[i].Status == true)
                                    {
                                        <td>
                                            <span name="badge" class="badge badge-pill badge-success">completed</span>

                                        </td>
                                    }
                                    @if (Model._Requests[i].Status == null)
                                    {
                                        <td>
                                            <span name="badge" class="badge badge-warning" id="pend">pending</span>

                                        </td>
                                    }


                                    <!--for the accept button-->

                                    @using (Html.BeginForm("Add_Fulfillment_Accept", "TBL_Request", FormMethod.Post))
                                    {
                                        @Html.AntiForgeryToken()

                                        <td>
                                            <button id="btnAccept" class="btn  btn-success" name="a_button" type="submit" value="true">Accept</button>
                                            @Html.Hidden("Request_ID", Model._Requests[i].Request_ID)
                                            @Html.Hidden("Status", Model._Requests[i].Status, new { id = "myEdit", value = "" })

                                        </td>
                                    }
                                    <!--for the reject button-->

                                    @using (Html.BeginForm("Add_Fulfillment_Reject", "TBL_Request", FormMethod.Post))
                                    {
                                        @Html.AntiForgeryToken()


                                        <td>

                                            <button id="btnReject" class="btn  btn-danger" name="button" data-toggle="modal" data-target="#exampleModal" type="button" value="false">Reject</button>
                                            @Html.Hidden("Request_ID", Model._Requests[i].Request_ID)
                                            @Html.Hidden("Status", Model._Requests[i].Status, new { id = "myEdit", value = "" })
                                        </td>
                                        <!--this is the note modal of the reject button -->
                                        <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
                                            <div class="modal-dialog" role="document">
                                                <div class="modal-content">
                                                    <div class="modal-header">
                                                        <h5 class="modal-title" id="exampleModalLabel">New message</h5>
                                                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                                            <span aria-hidden="true">&times;</span>
                                                        </button>
                                                    </div>
                                                    <div class="modal-body">


                                                        <div class="form-group">


                                                            @Html.TextArea("Note", Model._Requests[i].Note, htmlAttributes: new { @class = "form-control" })
                                                        </div>

                                                    </div>
                                                    <div class="modal-footer">
                                                        <input type="submit" value="submit" class="btn btn-success" id="finalSave" />

                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    }
                                </tr>
                            }
                                </tbody>
<script>

        $(function () {
            var msg = "@(TempData["success"] as string)";
            if (msg !== "") {
                toastr.success('the request status has been updated successfully!');
            }
        });

        $('[name = "a_button"]').click(function () {
            $('[name = "Status"]').val($('[name = "a_button"]').val());

        })

        $('[name = "button"]').click(function () {
            $('[name = "Status"]').val($('[name = "button"]').val());

        })
</script>

методы контроллера

 //accept method for the accept button
        #region fulfillment
        [CustomAuthorize(Roles = AccessRoleHelper.Training_Action)]
        [HttpPost]
        public ActionResult Add_Fulfillment_Accept(int Request_ID, bool Status)
        {
            var user = db.TBL_Request.Find(Request_ID);

            user.IsApproved = Status  ;
            //db.TBL_Request.Add(user);

            db.SaveChanges();
            TempData["success"] = "Done";
            return RedirectToAction("Training_Action");
        }

        //reject method for the reject button
        [CustomAuthorize(Roles = AccessRoleHelper.Training_Action)]
        [HttpPost]
        public ActionResult Add_Fulfillment_Reject(int theId , bool Status , string Note)
        {
            var selectedRequest = db.TBL_Request.Find(theId);
            selectedRequest.Note = Note;
            selectedRequest.IsApproved = Status;
            db.SaveChanges();
            TempData["success"] = "Done";
            return RedirectToAction("Training_Action");
        }
        #endregion

Я действительно ценю вашу помощь

1 Ответ

0 голосов
/ 06 февраля 2020

в вашем коде есть большой DONT

1-й, вы зацикливаете html контент, поэтому, если вы дадите им идентификатор, убедитесь, что они динамические c, а позвольте мне привести вам пример

скажем, вы создаете кнопку отклонения, и ваша html будет

, а когда вы наберете oop, вы получите несколько кнопок с одинаковым идентификатором

здесь, в вашем случае, лучшей идеей будет вызов метода на стороне клиента здесь при нажатии btn как

тип ввода = кнопка onClieck YourMethodWhichWillShowTheModalAndSubmit ()

следующая вещь, если тип ввода передается, то это отправит форму и, следовательно, модал никогда не будет показан

...