最近我尝试将ASP.NET 2.0项目转换为MVC 5,其中在应用程序中有超过200个webform,其中使用了Response.Redirect(“URL”),在转换为MVC 5后无效项目,我发现的解决方案是将覆盖参数的endResponse设置为false,如下所示
Response.Redirect("URL",false);
现在打开200多个文件并更新这一行并不容易和可行,所以我们可以将这个标志设置为false作为默认值,还是可以覆盖这个Response.Redirect方法?
或者有没有办法找到带有一些正则表达式的Response.Redirect(“URL”)并一次性替换所有?
任何帮助将不胜感激。
答案 0 :(得分:1)
正则表达式查找和替换会起作用,但我的正则表达式并不好,但我有一个更简单的查找和替换。
创建新功能
public void NewRedirect(String url)
{
Response.Redirect(url, false);
}
然后查找并替换
的Response.Redirect
到
NewRedirect
这可以将您的所有重定向保存在一个位置,并且可以管理以备将来使用。我做了一些更复杂的事情,但在我的应用程序中与上面类似,以管理所有重定向。在许多情况下,确保控制所有重定向非常方便。
修改强>
在回答你的问题是否有覆盖方法时,答案是否定的。
如果你看一下.NET源代码 http://referencesource.microsoft.com/#System.Web/HttpResponse.cs,485d70e24a9bc19c
您会看到除了该值之外没有其他地方它获得endResponse,因此必须在方法调用期间在参数中设置它。
唯一的另一个选择是覆盖HttpResponse中的方法,但我真的不建议你这样做。