2010-02-02 57 views
1

我使用的是asp.net mvc。從asp.net中的action方法返回一個url mvc

我有一個鏈接與「文檔」列表...當點擊鏈接調用一個動作方法將文檔添加到收藏夾列表。

如何在操作方法中返回到同一頁面之前單擊「添加最愛」鏈接? 原因是我要保持有尋呼等的查詢字符串參數

如:

我的頁面3

文檔1 [加入收藏夾](調用的一個鏈接頁面1

動作方法)

文檔2 [添加到收藏夾(調用的操作方法的鏈接)

文件3 [添加到收藏夾]

Document4 [添加到收藏夾]

尋呼是URL內保持着與查詢字符串參數(調用的操作方法的鏈接)(調用的操作方法的鏈接)..

當他們點擊添加我希望能夠保持URL,因爲它應該考慮到頁碼它是在

+1

你要我更清晰一點在你asikng什麼。 – 2010-02-02 16:52:07

回答

0

你就不能在當前頁面添加到操作參數?

public ActionResult AddFavourite(int? page) 
{ 
    // generate your paged into based on page parameter 
    return View(whatever_your_paged_view_is); 
} 
0

一種可能的方式是在每個資源在文檔列表中的鏈接所需要的QueryStrings。您將通過ViewData將所需的查詢字符串傳遞到顯示文檔列表的視圖。

<% foreach(var doc in Model) { %> 
    <%= ActionLink(doc.Title, "AddtoFavorites", new { Page = ViewData["PageNumber"], Query = ViewData["Query" }) %> 
<% } %> 

或類似的東西。

然後在你做的工作給文檔添加到「收藏夾」的操作方法:

public ActionResult AddToFavorites(int documentID, int page, string query) 
{ 
    // Do the work to add the document to favorites 
    return RedirectToAction("ActionName", new { Page = page, Query = query}); // where "ActionName" is the name of the action that the user was on before they got here 
} 

另一種方式是存儲在TempData的尋呼信息,但這事特別是如果你複雜化期望用戶點擊多個鏈接。

0

如果JavaScript是一個選項調用JavaScript:history.back()

0

您可以使用Request.UrlReferrer獲得以前的網址。它是http協議的一部分,由瀏覽器作爲http頭髮送。請記住,它依賴於瀏覽器/客戶端實現,如果它與請求一起發送,並且可能不總是在那裏。

根據我的最佳選擇是添加您的參數直接分頁鏈接。

0

我會發送頁面中的一個額外的參數returnUrl,這個模式也被使用了。NET隊自己在AccountController

<%= Html.ActionLink("LINKNAME", "ACTION", new { id = "DOCID", returnUrl = Request.Url.PathAndQuery }) %> 

現在你的行動看起來是這樣的:

public ActionResult ACTION(int id, string returnUrl) 
{ 
    //do some stuff 
    return Redirect(returnUrl); 
} 
相關問題