[英]In MVC how to go back dynamically
在我正在創建的Help Desk系統中-我有一個用於編輯票證的視圖,該視圖可以正常運行。 但是,此人保存所做的編輯並返回到上一個列表視圖之后(可以是8個不同視圖中的任何一個)。 因此,我發現代碼可以回到上一個視圖:
<a href="javascript:void(0);" onclick="history.go(-1);">Back to Ticket List View</a>
從列表的意義上講,它確實起作用。 不幸的是,盡管返回時所做的任何更改都不會反映在列表視圖中。 我點擊刷新后,一切都是正確的。 我如何做到這一點,以便用戶無需點擊“刷新”?
這是我的EditUserTicket控制器代碼:
public ActionResult EditUserTicket(Guid id)
{
var model = db.Tickets
.Include(t => t.TicketNotes)
.Where(t => t.TicketId == id).First();
return View(model);
}
您可以以ViewModel的形式將返回URL(即故障單列表視圖的URL)傳遞給“編輯故障單視圖”。 您的EditTicketViewModel應該類似於:
public class EditTicketViewModel
{
public String ReturnUrl {get;set;}
public Guid TicketId {get;set;}
}
以及TicketController的Edit方法:
[HttpGet]
public ActionResult EditUserTicket(EditTicketViewModel model)
{
var model = db.Tickets
.Include(t => t.TicketNotes)
.Where(t => t.TicketId == model.TicketId).First();
return View(model);
}
為了將返回URL傳遞給上述控制器,您需要將視圖模型嵌入提供可導航到EditUserTicketView的頁面的超鏈接中。 使用此HTML幫助器替換您的超鏈接:
@Html.ActionLink("hyperlinkText", "EditUserTicket", "yourTicketControllerName",
new EditTicketViewModel
{TicketId = yourTicketGuid, ReturnURL = Request.RawUrl}, null);
這僅部分解決了問題,EditUserTicketView現在包含發送GET請求時的返回URL,但是當用戶執行POST請求以保存數據時,返回URL將丟失。 我不知道您是使用AJAX方法來保存數據還是常規的同步POST請求。 如果使用常規方法,則在發布時需要在表單中傳遞返回URL,以便在重定向回EditUserTicketView時可以使用它。
您的EditUserTicketView.cshtml的返回超鏈接應類似於:
<a href="@Model.ReturnUrl">Back to Ticket List View</a>
希望對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.