Кнопка отправки не работает с действием HTTP post, уже подписанным на действие на странице бритвы - PullRequest
0 голосов
/ 14 мая 2019

У меня есть класс контроллера MVC Asp.net с именем OrdersController, у которого есть метод HttpPost Action с именем Create (). Затем у меня есть страница просмотра с именем Create.cshtml, которая использует синтаксис бритвы и подписывается на событие action внизу страницы бритвы.

Но всякий раз, когда я нажимаю кнопку, ничего не происходит, ничего не отправляется на мой сервер, нет ошибок, нет загрузки, ничего.

Может ли кто-нибудь взглянуть на мой метод Create () Action и мою страницу бритвы Create.cshtml и сказать мне, если я сделал что-то не так или пропустил что-то, пожалуйста?

это мой метод создания

    // POST: Orders/Create
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(OrderViewModel collection)
        {
            try
            {
                var order = new Order()
                {
                    OrderTime = DateTime.Now
                };
                order.LocationId = collection.LocationId;
                order.CustomerId = collection.CustomerId;
                order.OrderTotal = 0;
                for (var i = 0; i < collection.Products.Count; i++)
                {
                    if (collection.Products[i].Checked)
                    {
                        order.OrderTotal += collection.Products[i].Price *      collection.AmountItems[i].QuantityBought;
                    }
                }
                order.Items = new List<OrderItem>();

                var orderItem = new OrderItem();

                //adding order items
                for(var i=0; i<collection.Products.Count;i++)
                {
                    if(collection.Products[i].Checked)
                    {
                        orderItem.QuantityBought =collection.AmountItems[i].QuantityBought;
                        orderItem.OrderItemNum = i;
                        orderItem.ProductId = collection.Products[i].ProductId;
                        orderItem.Price = collection.Products[i].Price;
                        order.OrderItems.Add(orderItem);
                    }
                }

                OrdRepo.AddOrder(order);
                foreach(var item in order.OrderItems)
                {
                    OrdRepo.AddOrderItem(item);
                }

                return RedirectToAction(nameof(Index));
            }

            catch
            {
               return View();
            }
        } 

ниже - моя страница бритвы, я подписываюсь на свое событие Create внизу

    @model HardwareStore.WebUI.Models.OrderViewModel
@{
    ViewData["Title"] = "Create";
}

<h1>Create Order</h1>
<form asp-action="Create">
    <div class="form-group">
        <label asp-for="LocationId" class="control-label">Location</label>
        <select asp-for="LocationId"
                asp-items="@(new SelectList(Model.Locations,"LocationId", "Name"))" class="form-control"></select>
    </div>
    <div class="form-group">
        <label asp-for="CustomerId" class="control-label">Customer</label>
        <select asp-for="CustomerId"
                asp-items="@(new SelectList(Model.Customers,"CustId", "FirstName"))" class="form-control"></select>
    </div>
    <div>
        @Html.LabelFor(model => model.Products)
        <br>
        @for (var i = 0; i < Model.Products.Count; i++)
        {
            @Html.HiddenFor(m => Model.Products[i].ProductId)
            @Html.HiddenFor(m => Model.Products[i].ProductName)
            @Html.HiddenFor(m => Model.Products[i].Description)
            @Html.HiddenFor(m => Model.Products[i].Price)
            @Html.CheckBoxFor(m => Model.Products[i].Checked)
            @:&nbsp;
            @Model.Products[i].ProductName
            @:&nbsp;
            @Html.EditorFor(m => Model.AmountItems[i].QuantityBought)
            @Html.HiddenFor(m => Model.AmountItems[i].OrderItemNum)
            <br />
        }
    </div>
    <div class="form-group">
        <input type="submit" value="Create" class="btn btn-primary" />
    </div>
</form>

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}

1 Ответ

0 голосов
/ 14 мая 2019

Вам нужен определенный метод = post, чтобы перейти к методу Post

<form asp-controller="Orders" asp-action="Create" method="post">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...