Đối với ASP.NET Core
Bạn có thể sử dụng thuộc tính asp-route- *:
<form asp-action="Login" asp-route-previous="@Model.ReturnUrl">
Ví dụ chi tiết khác:
Hãy tưởng tượng rằng bạn có một Bộ điều khiển phương tiện với các hành động
Mục lục
Chi tiết
Biên tập
và bạn có thể chỉnh sửa bất kỳ phương tiện nào từ Chỉ mục hoặc từ Chi tiết, vì vậy nếu bạn nhấp vào chỉnh sửa từ chỉ mục, bạn phải quay lại chỉ mục sau khi chỉnh sửa và nếu bạn nhấp vào chỉnh sửa từ chi tiết, bạn phải quay lại chi tiết sau khi chỉnh sửa.
//In your viewmodel add the ReturnUrl Property
public class VehicleViewModel
{
..............
..............
public string ReturnUrl {get;set;}
}
Details.cshtml
<a asp-action="Edit" asp-route-previous="Details" asp-route-id="@Model.CarId">Edit</a>
Index.cshtml
<a asp-action="Edit" asp-route-previous="Index" asp-route-id="@item.CarId">Edit</a>
Edit.cshtml
<form asp-action="Edit" asp-route-previous="@Model.ReturnUrl" class="form-horizontal">
<div class="box-footer">
<a asp-action="@Model.ReturnUrl" class="btn btn-default">Back to List</a>
<button type="submit" value="Save" class="btn btn-warning pull-right">Save</button>
</div>
</form>
Trong bộ điều khiển của bạn:
// GET: Vehicle/Edit/5
public ActionResult Edit(int id,string previous)
{
var model = this.UnitOfWork.CarsRepository.GetAllByCarId(id).FirstOrDefault();
var viewModel = this.Mapper.Map<VehicleViewModel>(model);//if you using automapper
//or by this code if you are not use automapper
var viewModel = new VehicleViewModel();
if (!string.IsNullOrWhiteSpace(previous)
viewModel.ReturnUrl = previous;
else
viewModel.ReturnUrl = "Index";
return View(viewModel);
}
[HttpPost]
public IActionResult Edit(VehicleViewModel model, string previous)
{
if (!string.IsNullOrWhiteSpace(previous))
model.ReturnUrl = previous;
else
model.ReturnUrl = "Index";
.............
.............
return RedirectToAction(model.ReturnUrl);
}