gpt4 book ai didi

asp.net-mvc - MVC 应用程序中的后退按钮功能

转载 作者:行者123 更新时间:2023-12-04 18:13:41 26 4
gpt4 key购买 nike

我需要在 MY MVC2 应用程序中实现后退按钮功能(在应用程序中使用显式后退按钮,而不是通过浏览器后退按钮)。

我已经浏览了这里的链接 Back button functionality using ASP.net MVC建议使用 Request.UrlReferrer。并且只要我有 HTTP Get(因为它带有查询字符串),它就可以很好地工作。但是当上一页是没有查询字符串的 HTTP POST 时,我会遇到问题。

有没有人研究过这样的解决方案?

我们最初的想法是生成和存储像 Stack 这样的链接,并在用户单击“返回”按钮时一一弹出 url。但是,如果有更好的解决方案\设计模式可以帮助我实现这一目标?

最佳答案

您可以将 returnurl 存储到 actionresult 路由值,并有一个用于反向链接的 html 助手。

helper :

public static class HtmlHelpersExtensions
{
public static MvcHtmlString BackLink(this HtmlHelper helper,string defaultAction)
{
string returnUrl = HttpContext.Current.Request["returnUrl"];
// If there's return url param redirect to there
if (!String.IsNullOrEmpty(returnUrl))
{
return new MvcHtmlString("<a href=" + returnUrl + " >Back</a>");
}
// if user just posted and there's no returnurl, redirect us to default
else if (HttpContext.Current.Request.HttpMethod == "POST")
{
return helper.ActionLink("Back", defaultAction);
}
// we didn't post anything so we can safely go back to previous url
return new MvcHtmlString("<a href=" + HttpContext.Current.Request.UrlReferrer.ToString() + " >Back</a>");
}
}

Controller :
    public ActionResult MyAction(string returnUrl)
{
return View(new MyModel());
}
[HttpPost]
public ActionResult MyAction(MyModel mm, string returnUrl)
{
if (ModelState.IsValid)
{
// No returnurl, redirect us to somewhere
if (string.IsNullOrEmpty(returnUrl))
return RedirectToAction("Index");

// redirect back
return Redirect(returnUrl);
}

return View(mm);
}

用法:
@Html.ActionLink("MyAction", "MyAction", new { returnUrl = Request.RawUrl.ToString() })

MyAction.cshtml 中的反向链接
@Html.BackLink("Index")

现在,帮助程序决定是使用 returnUrl 参数、默认操作还是通过 urlreferrer 带您返回。

关于asp.net-mvc - MVC 应用程序中的后退按钮功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12127255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com