Показ загрузочной модели для создания формы с некоторыми параметрами - PullRequest
0 голосов
/ 18 апреля 2020

Я хочу показать модель, через которую я хочу обновить статус заказа. Я уже создал метод пост-действия, который требует, чтобы order_id и статус обновляли статус заказа. Но я не понимаю, как передать существующий статус и идентификатор заказа в модель, так как есть таблица, у которой есть связка order_id и статус. а также как отправить форму. Вот мой код

  //Button Through which model should show
   <button type="button" onclick="ShowModel(@item.order_id,@item.orderStatus)">Update Status</button>

//Model Code
<div id="myModal" class="modal fade hide" role="dialog">
    <div class="modal-dialog">
        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header ">
                <h4 class="modal-title">Order Status</h4>
                <button type="button" class="close" data-dismiss="modal">&times;</button>
            </div>
            <div class="modal-body">
                <form asp-controller="Order" asp-action="UpdateStatus" asp-route-order_id="" asp-route-status="" method="post">
                    <div class="for-group row">
                        <label class="col-12 col-form-label">Order Status</label>
                        <div class="col-12">
                            <select asp-for="orderStatus" class="custom-select mr-sm-2"
                                    asp-items="Html.GetEnumSelectList<Status>()">
                                <option value="">Please Select</option>
                            </select>
                        </div>
                        <span asp-validation-for="orderStatus" class="text-danger col-12"></span>
                    </div>

                    <button type="submit" class="btn btn-success">Done</button>
                    <button type="button" class="btn btn-success m-2" data-dismiss="modal">Done</button>
                </form>
            </div>
        </div>
    </div>
</div>

//JS
@section Scripts{
<script>
    function ShowModel(order_id, status) {            
        $('myModal').modal('show')
    }
</script>

}

1 Ответ

0 голосов
/ 20 апреля 2020

Вот рабочая демонстрация, к которой можно обратиться:

Просмотр

@model List<Demo1.Models.Order>

<table class="table">
<thead>
    <tr>
        <th>
            Name
        </th>
        <th>
            OrderStatus
        </th>
        <th></th>
    </tr>
</thead>
<tbody>
    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Name)
            </td>
            <td>
                <select asp-for="@item.OrderStatus" class="custom-select mr-sm-2"
                        asp-items="Html.GetEnumSelectList<OrderStatus>()">
                    <option value="">Please Select</option>
                </select>
            </td>
            <td>
                <a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
                <a asp-action="Details" asp-route-id="@item.Id">Details</a> |
                <a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
                <a class="btn btn-success" data-toggle="modal" data-target="#myModal" data-orderid="@item.Id" data-orderstatus="@item.OrderStatus">Update Status</a>

            </td>
        </tr>
    }
 </tbody>
</table>

<div id="myModal" class="modal fade hide" role="dialog">
  <div class="modal-dialog">
    <!-- Modal content-->
    <div class="modal-content">
        <div class="modal-header ">
            <h4 class="modal-title">Order Status</h4>
            <button type="button" class="close" data-dismiss="modal">&times;</button>
        </div>
        <div class="modal-body">
            <form asp-controller="Home" asp-action="UpdateStatus" method="post">
                <div class="for-group row">
                    <input asp-for="@Model[0].Id" name="Id" hidden/>
                    <label class="col-12 col-form-label">Order Status</label>
                    <div class="col-12">
                        <select asp-for="@Model[0].OrderStatus" name="orderStatus" class="custom-select mr-sm-2"
                                asp-items="Html.GetEnumSelectList<OrderStatus>()">
                            <option value="">Please Select</option>
                        </select>
                    </div>
                    <span asp-validation-for="@Model[0].OrderStatus" class="text-danger col-12"></span>
                </div>

                <button type="submit" class="btn btn-success">Done</button>
                <button type="button" class="btn btn-success m-2" data-dismiss="modal">Done</button>
            </form>
        </div>
    </div>
  </div>
</div>

@section Scripts
{
 <script>
    $('#myModal').on('show.bs.modal', function (event) {
     var clickedRow = $(event.relatedTarget);
     var Id = clickedRow.data('orderid');
     var orderStatus = clickedRow.data('orderstatus');
        $.get("/Home/Find?id=" + Id, function (data)
        {
            console.log(data);
            $('#myModal input[name="Id"]').val(data.id);
            $('#myModal select[name="orderStatus"]').val(data.orderStatus);
        });

    });  
 </script>
}

Контроллер

    public IActionResult OrderModal()
    {
        var data = _context.Order.ToList();
        return View(data);
    }

    public IActionResult Find(int id)
    {
        var order = _context.Order.Find(id);
        return Json(order);
    }


    public void UpdateStatus(Order order)
    {
       // the stuff you want
    }

Результат enter image description here

...