我们可以在ASP.NET MVC中广播.aspx扩展名吗?

时间:2011-12-19 04:04:38

标签: asp.net asp.net-mvc

我有一个令人困惑的问题。我必须在ASP.NET MVC中转换ASP.NET Web应用程序。一切都很顺利,但问题是,网站所有者希望页面的网址不应该更改意味着如果任何网页有网址http://abc.com/a.aspx那么它应该是这样的。 现在我已经告诉我的团队成员,无法在ASP.NET MVC中广播任何扩展名,如.aspx扩展名,但他告诉我要搜索它。 因为我做了很多搜索,但没有找到任何方法来执行它。 是否有可能我们可以通过某些路由配置在ASP.NET MVC2或3中的URL中广播.aspx扩展名,以便页面URL不会更改。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

是的,请看一下这篇文章:

Integrating ASP.NET MVC 3 into existing upgraded ASP.NET 4 Web Forms applications

Hanselman还制作了一个NuGet套装,只需点击几下就能很好地为你滚动球:

AddMvc3ToWebForms

我个人使用这个NuGet包进行ASP.NET到MVC 3的转换。我们能够从同一个解决方案同时运行两个版本的应用程序,非常好!

答案 1 :(得分:0)

您可以通过多种方式实现这一目标。最简单的方法是使用IIS Url Rewriting将任何.aspx文件重写为其等效的MVC路由。

另一种方法是简单地创建与.aspx扩展名匹配的路由,并将它们路由到您的Controller / Action。即:

routes.MapRoute("Default", "{controller}/{action}.aspx",  
   new { controller = "Home", action = "Index" });

这里的缺点是你不能使用友好的参数,你可以,但它可能会破坏现有的URL。他们看起来像blah.com/blah/blah.aspx/blah。当然,查询字符串参数仍然有效。

第三种方法是简单地设置IIS以将.aspx的任何扩展名重定向到其等效的MVC路由。