C# actionresult刷新当前页面

C# actionresult刷新当前页面,c#,asp.net-mvc,actionresult,C#,Asp.net Mvc,Actionresult,从一些操作方法中,我想返回一个结果,强制当前页面刷新 我写这篇文章是为了得到这样的结果: public class RefreshResult : ActionResult { public override void ExecuteResult(ControllerContext context) { Uri referrer = context.HttpContext.Request.UrlReferrer; if(refe

从一些操作方法中,我想返回一个结果,强制当前页面刷新

我写这篇文章是为了得到这样的结果:

 public class RefreshResult : ActionResult {

        public override void ExecuteResult(ControllerContext context) {
            Uri referrer = context.HttpContext.Request.UrlReferrer;
            if(referrer == null || string.IsNullOrEmpty(referrer.AbsoluteUri)) {
                return;
            }
            context.HttpContext.Response.Redirect(referrer.AbsoluteUri);
        }
    } 
在我的操作方法中,我只返回新的RefreshResult。这是可行的,但我对这种方法可能存在的局限性感到好奇。我不想让客户选择访问直接返回这些结果的操作方法,所以我认为我总是能够以这种方式刷新当前页面。我说得对吗

我在stackoverflow上发现了以下问题(以及其他几个问题):

但我更感兴趣的是这种方法可能存在的局限性,而不是“如何做”


Thanx提前

我不确定您所说的“将强制当前页面刷新的结果”是什么意思。如果您正在服务器上执行操作,那么您已经在“刷新”页面

如果您想要的是某种post redirect get模式,以便通过get操作再次“着陆”到原始页面上,那么这非常简单-只需实现从RedirectToRouteResult派生的自定义ActionResult(由控制器上的RedirectToAction()方法使用),并为其提供当前路由值


基于推荐人的方法并不完全糟糕,但请记住,推荐人是由浏览器发送的标题,在某些客户端中可以是可选的(在浏览器中禁用),而当前路由值始终对您可用。

rouen answer是刷新页面的一种方法。另一个是重定向回请求发送的Url,无需自己编写实现,只需在控制器中的正常操作中执行即可

操作可能如下所示

public ActionResult SomeAction()
{
    //do some work here...

    return Redirect(Request.UrlReferrer.ToString());
}

为什么不简单地使用RedirectResult呢?事实上我使用的是RedirectToRouteResult,但我不喜欢我需要向它提供路由值。使用refreshresult,我不需要知道重定向的url。我不理解您的评论。在您的代码中,您重新链接到一个url RedirectResult获取一个url,即返回新的RedirectResult(referer.AbsoluteUri);我的意思是不需要创建新的类,我明白你的意思。我想我使用这段代码的原因很明显——我不想在ExecuteSult override中到处重复这段代码。有了这个刷新结果,我可以简单地返回新的刷新结果——不需要处理直接从浏览器地址栏调用actionmethod等的情况。在任何地方,“将强制当前页面刷新的结果”对我来说都是不言自明的