将旧版webforms网址路由到mvc控制器/操作?

时间:2015-08-25 01:51:16

标签: asp.net asp.net-mvc webforms asp.net-mvc-routing

我们计划将传统的webforms逐步转换为MVC。 (并沿途学习MVC!)

我想知道路由是否是适当的方式,无效,一次一个地用控制器/操作替换旧的webforms页面。现在我们在创建MVC区域时为我们生成了这个,并使用nuget将MVC添加到项目中:

Public Overrides Sub RegisterArea(ByVal context As AreaRegistrationContext)
    context.MapRoute(
        "MVC_default",
        "MVC/{controller}/{action}/{id}",
        New With {.action = "Index", .id = UrlParameter.Optional}
    )
End Sub

所以控制器“foo”带动作“bar”,用url“... / AppName / MVC / foo / bar”引用,而aspx页面用urls“... / AppName / Pages / PageName”访问”

我可以在App_Start的RouteConfig.vb中使用上面的其他MapRoute()调用,或者MapPageRoute()来专门将各个页面映射到相应的新MVC控制器/操作吗?那会是什么样的?

这样我们就可以避免触及webforms端的混乱代码隐藏来构建我们的导航网址。

1 个答案:

答案 0 :(得分:0)

如果您使用的是IIS,则可以使用IIS Rewrite rules将MVC路由伪装成WebForms或Classic ASP URL。您不必更改可能浮动的旧链接,并且可以保留旧的WebForms页面,并通过切换重写规则在MVC / WebForms / Classic ASP之间切换(无需重新部署站点)。

您可以选择重定向还是重写,具体取决于您是否希望客户端看到新的MVC URL。

这是经典ASP的一个例子 - > web.config中的MVC重写规则:

<rule name="AppPageRewrite" enabled="true" stopProcessing="true">
  <match url="app.asp" />
  <action type="Rewrite" url="/app" appendQueryString="true" />
</rule>

顺便说一句,将Web Forms / Classic ASP站点逐步转换为MVC(在每页,甚至是子页面级别)已经证明在我的经验中非常有效(在Agile / Scrum环境中尤其有效)。