.NET MVC игнорирует мой RedirectToAction и оказывается на недопустимой странице

У меня проблема с действием в ASP.NET MVC 5.

Я отправляю форму по URL-адресу (/ Tickets / ManageChangeTicketStatus / {Id}), отвечающему за обработку POST, и после обработки данных я создаю перенаправление, потому что в конце этого действия POST нет представления.

Но после обработки данных и нажатия этого RedirectToAction мой браузер по-прежнему использует / Tickets / ManageChangeTicketStatus / {Id} вместо перенаправления.

Код HTML и действия в контроллере будут приложены ниже.

HTML файл:

@using UniversityTicketing.Models

<div class="col-md-offset-1 col-md-10">
    @using (Html.BeginForm("ManageChangeTicketStatus", "Tickets", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
    {
        @Html.AntiForgeryToken()
        <h4>Schimba statusul ticketului</h4>
        @Html.ValidationSummary("", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(m => m.Status, new { @class = "col-md-1 control-label" })
            <div class="col-md-3">
                @Html.EnumDropDownListFor(m=>m.Status, "Selecteaza statusul", new { @class = "form-control" })
            </div>
        </div>
        <div class="form-group">
            <div class="col-md-8">
                <input type="submit" class="btn btn-primary" formaction="/Tickets/ManageChangeTicketStatus/@ViewData["modelId"]" value="Schimba status" />
            </div>
        </div>
    }
</div>

Код контроллера:

        // GET: Tickets/ManageSingleTicket/{Id}
        public ActionResult ManageSingleTicket(int Id)
        {
            var ticket = DbContext.Tickets
                            .Include("Department")
                            .Include("CreatedBy")
                            .Include("TicketComments.SentBy")
                            .Where(t => t.Id == Id)
                            .FirstOrDefault();
            var mapper = ClassMapper.Create();
            var userTicketVM = mapper.Map<UserTicketViewModel>(ticket);

            ticket.LastOpenedByEmployee = DateTime.Now;
            DbContext.SaveChanges();

            return View(userTicketVM);
        }

        //
        // POST: /Tickets/ManageChangeTicketStatus/{Id}
        [HttpPost]
        public ActionResult ManageChangeTicketStatus(int Id, UserTicketViewModel model)
        {
            var ticket = DbContext.Tickets
                            .Include("Department")
                            .Include("CreatedBy")
                            .Include("TicketComments.SentBy")
                            .Where(t => t.Id == Id)
                            .FirstOrDefault();
            var mapper = ClassMapper.Create();
            var employeeTicketVM = mapper.Map<UserTicketViewModel>(ticket);

            if (ModelState.IsValid)
            {
                ticket.Status = model.Status;
                ticket.ModifiedTime = DateTime.Now;
                ticket.LastOpenedByEmployee = DateTime.Now;
                DbContext.SaveChanges();

                employeeTicketVM = mapper.Map<UserTicketViewModel>(ticket);

                return RedirectToAction("ManageSingleTicket", Id);
            }

            return View("ManageSingleTicket", employeeTicketVM);
        }```

person Adrian    schedule 22.05.2020    source источник
comment
попробуйте это: return RedirectToAction("ManageSingleTicket", new {Id=Id});   -  person Mohammed Sajid    schedule 22.05.2020


Ответы (1)


Предложение Саджида решило проблему. Спасибо, Саджид!

попробуйте это: return RedirectToAction("ManageSingleTicket", new {Id=Id});

person Adrian    schedule 22.05.2020