2010-02-02 56 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); 
} 
相关问题