c# – 使用现有的Webforms站点运行MVC
我读过有关将MVC 3添加到现有webforms网站的各种文章.我已经对webforms站点的全局asax进行了更改,以支持MVC以及对web.config的更改.但是仍然存在一些问题.
> MVC 3是贪婪的 – 默认情况下,它接管网站的根目录,以便导航到根目录,我转到mvc的入口页面,而不是我想要的webforms页面.要在导航到root时要清楚,我希望它转到mysite.com/default.aspx.要修复站点根我添加 routes.MapPageRoute(“SiteRoot”,“”,“?/ Default.aspx”) http://localhost:86/default?action=Index&controller=Blog 这两个问题我没有看到任何人在关于混合MVC3和webforms的各种博客文章中提到. 哦,我在global.asax中有routes.IgnoreRoute(“{resource} .aspx / {* pathInfo}”).资源处理程序使用aspx文件扩展名,所以我认为然后在全局中排除hanlder会起作用,但我猜不会. 我知道的另一个选项是在wbeforms网站内设置一个文件夹并将其作为自己的应用程序起点运行 – 但是我最终得到了一个我真的不想要的网址,例如site.com/blog/blog/index第一个博客是作为自己的应用程序点运行的文件夹,第二个博客是控制器. 解决方法
我能找到的最佳解决方案是不将MVC 3与现有的webforms网站混合使用.而是将MVC目录设置为自己的应用程序起点,然后从该文件夹运行MVC,以便它和现有的webforms应用程序完全不知道彼此.以这种方式,资源处理程序和httpmodules以及其他处理程序仍然适用于webforms站点.通过这种方式,域根默认为webforms default.aspx而不是MVC.此外,我不必将该条目放入global.asax,这反过来搞砸了mvc 3网址.下一个问题是处理网址,以便我没有url lke blog / blog / post / 1.要解决此问题,我将html操作链接更改为
@Html.ActionLink(item.PostTitle,"Post",New With {.id = item.PostId},Nothing) 然后对global.asax进行更改 – 将默认路由更改为(只需删除{controller}: routes.MapRoute( _ "Default",_ "{action}/{id}",_ New With {.controller = "Blog",.action = "Index",.id = UrlParameter.Optional},New String() {"RiderDesignMvcBlog.Core.Controllers"}) 所以现在而不是博客/博客/索引或博客/博客/帖子/ 1我得到一个适当的干净网址没有网址中的重复博客 – 博客/帖子/ 1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |