【问题标题】:Set endResponse default value to false for Response.Redirect将 Response.Redirect 的 endResponse 默认值设置为 false
【发布时间】:2014-11-10 06:27:20
【问题描述】:

最近我尝试将 ASP.NET 2.0 项目转换为 MVC 5,在应用程序中有超过 200 个网络表单,其中使用了 Response.Redirect("URL"),转换为 MVC 5 后不起作用项目,我找到的解决方案是将 endResponse 设置为 false 的覆盖参数如下

Response.Redirect("URL",false);

现在打开 200 多个文件并更新这一行并不容易和可行,那么有什么方法可以将此标志设置为 false 作为默认值,或者我们可以覆盖此 Response.Redirect 方法吗?

或者有什么方法可以使用一些正则表达式找到 Response.Redirect("URL") 并一次性替换所有内容?

任何帮助将不胜感激。

【问题讨论】:

    标签: asp.net httpresponse response.redirect


    【解决方案1】:

    一个正则表达式查找和替换可以工作,但我的正则表达式不是很好,但我有一个更简单的查找和替换。

    创建一个新函数

    public void NewRedirect(String url)
    {
        Response.Redirect(url, false);
    }
    

    然后进行查找和替换

    响应.重定向

    新重定向

    这会将您的所有重定向保存在一个位置,并且便于将来管理。我在我的应用程序中做了一些更复杂但类似于上面的事情来管理所有重定向。在许多情况下,确保您控制所有重定向非常方便。

    编辑

    回答您的问题是否有覆盖方法,答案是否定的。

    如果您查看 .NET 源代码 http://referencesource.microsoft.com/#System.Web/HttpResponse.cs,485d70e24a9bc19c

    你会看到除了得到endResponse的那个值之外没有其他地方,因此必须在方法调用期间在参数中设置它。

    唯一的其他选择是覆盖 HttpResponse 中的方法,但我严重不建议您这样做。

    【讨论】:

    • 这真的很好,但仍在寻找更好的方法,我们不能覆盖这个 .redirect 方法吗?
    • 我添加了更多关于为什么不能覆盖该值的信息。要么是正则表达式查找和替换,要么是我上面提到的方法。
    猜你喜欢
    • 2015-08-04
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 2010-11-27
    • 2019-05-06
    相关资源
    最近更新 更多