У меня проблема с действием в 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);
}```
return RedirectToAction("ManageSingleTicket", new {Id=Id});
- person Mohammed Sajid   schedule 22.05.2020