我们计划将传统的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端的混乱代码隐藏来构建我们的导航网址。
答案 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环境中尤其有效)。