簡體   English   中英

在MVC中如何動態返回

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM