【asp源码栏目提醒】:网学会员在asp源码频道为大家收集整理了“自定义asp net mvc的WebFormView - 互联网“提供大家参考,希望对大家有所帮助!
自定义asp net mvc的WebFormView 先看一下我的解决方案的目录结构吧 一先把Controller程序提取出来 默认的情况是所有的Controller.cs文件都会放在Web程序集下的一个叫Controllers的文件夹下 这样感觉有点不爽你懂的. 我们决定把所有的Controller程序放到一个自定义的应用程序集中去上图中的mrlh.Admin.Controllers 先把web程序集下的Global.asax.cs文件删掉 然后把Global.asax的标记代码改为如下 Application Codebehindmrlh.Admin.Controllers.App.MvcApplicationInheritsmrlh.Admin.Controllers.App.MvcApplicationLanguageC这样应用程序启动时就会到我们自定义的应用程序集去执行相关的操作了 mrlh.Admin.Controllers.App.MvcApplication的相关代码如下 namespace mrlh.Admin.Controllers.Apppublic class MvcApplicationSystem.Web.HttpApplicationpublic static void RegisterRoutesRouteCollection routesroutes.IgnoreRouteresource.axd/pathInforoutes.MapRouteDefault//路由名称controller/action/id//带有参数的URL newcontrollerXiTongactionIndexidUrlParameter.Optional//参数默认值protected void Application_Start//以下两句为启用自定义的WebFormViewEngine ViewEngines.Engines.ClearViewEngines.Engines.Addnew MvcViewEngineAreaRegistration.RegisterAllAreasRegisterRoutesRouteTable.Routes这样做之后 所有的Controller程序就不用集中写到web程序集中去了 就可以写在mrlh.Admin.Controllers这个程序集中了 二改变View的文件的目录结构 默认的情况是所有的.aspx文件都放在web程序集中的Views目录下 这样感觉也有点不爽你懂的. 如果想改变aspx文件的目录结构就必须自定义WebFormViewEngine了 细心的读者会看到在上面的代码中Application_Start方法里前面三句话 //以下两句为启用自定义的WebFormViewEngine ViewEngines.Engines.ClearViewEngines.Engines.Addnew MvcViewEngine这就是把自定义的WebFormViewEngine添加到应用程序中去的方法 MvcViewEngine的代码如下 namespace mrlh.Admin.Controllers.Apppublic class MvcViewEngineVirtualPathProviderViewEnginepublic MvcViewEngineMasterLocationFormatsnew/1View/0.master/SharedView/0.masterAreaMasterLocationFormatsnew/Areas/2/Views/1/0.master/Areas/2/Views/Shared/0.masterViewLocationFormatsnew/1View/0.aspx/1View/0.ascx/SharedView/0.aspx/SharedView/0.ascxAreaViewLocationFormatsnew/Areas/2/Views/1/0.aspx/Areas/2/Views/1/0.ascx/Areas/2/Views/Shared/0.aspx/Areas/2/Views/Shared/0.ascxPartialViewLocationFormatsViewLocationFormatsAreaPartialViewLocationFormatsAreaViewLocationFormatsprotected override IView CreatePartialViewControllerContext controllerContextstring partialPathreturn new WebFormViewpartialPathnullprotected override IView CreateViewControllerContext controllerContextstring viewPathstring masterPathreturn new WebFormViewviewPathmasterPath这样做之后类似这样的请求 都会在web程序集中找到YuanGongView/YuanGong.aspx 然后再呈现给观众 注意 这里不能试图把每个文件夹名字中后面的View字样去掉 因为ASP.NET MVC如果发现服务器的物理路径上存在相应的文件将直接输出了 也就是请求是这样的发现服务web目录下对应有此文件YuanGong/YuanGong.aspx 将直接输出 三自定义目录结构的好处 我之所以这样做一个是为了感官上的舒服毕竟自己的程序跟自己的媳妇一样 不但要从触觉上考虑还要从视觉上考虑 另外还可以把多个web程序集的controller程序放在同一个程序集中方便代码的重用 忽然觉得好像面向服务编程 其三目录结构改变了也方便权限的控制 demo作者liulun发表于2010-11-18 1205原文链接 评论3查看评论发表评论 最新新闻 ·Android的工作需求量从去年到今年上升了7102010-11-18 1413 ·M9开始预订12月25上市假的2010-11-18 1411 ·简单不是答案2010-11-18 1409 ·湖卫淘宝合资公司Hitao启动招商2010-11-18 1405 ·Voodoo PC创始人离开惠普2010-11-18 1401 编辑推荐DreamSpark--微软点亮梦想学生免费软件项目 网站导航博客园首页我的园子新闻闪存小组博问知识库