我继承了一个MVC / Webforms混合项目,MVC部分使用MVCSiteMapProvider创建菜单,而WebForm部分使用定制的菜单创建工具。
我刚刚创建了一些自定义MVCSiteMapProvider节点,并希望将整个MVCSiteMapProvider移植到项目的webform部分中使用。这到底有没有可能?有没有人能建议一些策略,将其嵌入到webform代码中?
谢谢安迪
发布于 2014-11-28 09:37:23
虽然从理论上讲,我们应该与WebForms实现互操作性,但据我所知,它还没有尝试过,甚至还没有经过测试。但是,如果设置它没有问题,我可能不会听说它。
要设置它,请执行以下操作:
url属性,而不是配置controller、action等。WebForms,并使用MVC中的AuthorizeAttribute。
这基本上就是默认的ASP.NET站点地图提供程序所具有的所有功能,因此在WebForms中工作时,您将无法访问可见性提供程序、动态节点提供程序或MvcSiteMapProvider的其他一些更高级的功能,除非您构建自己的System.Web.SiteMapProvider来处理这些细节。
由于所有的HTML helper都没有回发,所以你也可以在WebForm中使用just writing the output of the Menu and SiteMapPath HTML helpers,尽管我对此表示怀疑,因为HTML helper是模板化的,这可能意味着它们只能在MVC视图中工作。构建自己的输出HTML甚至输出ASP.NET控件的helpers也是可能的,因为它们只是可以从WebForms调用的扩展方法。
请通过打开new issue @ GitHub提供任何反馈。
发布于 2016-10-26 15:09:24
您可以使用两个不同的站点地图文件。一个用于webforms的带有XMLSiteMapProvider的web.sitemap,另一个用于带有MVCSiteMapProvider的MVC部分Mvc.Sitemap。对于webforms,指定url,而不是Mvc.SiteMap中的操作和控制器。我目前正在我们的混合项目中使用它,它工作得很好。
https://stackoverflow.com/questions/27167104
复制相似问题