首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Webforms的MVCSiteMapProvider

带有Webforms的MVCSiteMapProvider
EN

Stack Overflow用户
提问于 2014-11-27 17:27:50
回答 2查看 376关注 0票数 1

我继承了一个MVC / Webforms混合项目,MVC部分使用MVCSiteMapProvider创建菜单,而WebForm部分使用定制的菜单创建工具。

我刚刚创建了一些自定义MVCSiteMapProvider节点,并希望将整个MVCSiteMapProvider移植到项目的webform部分中使用。这到底有没有可能?有没有人能建议一些策略,将其嵌入到webform代码中?

谢谢安迪

EN

回答 2

Stack Overflow用户

发布于 2014-11-28 09:37:23

虽然从理论上讲,我们应该与WebForms实现互操作性,但据我所知,它还没有尝试过,甚至还没有经过测试。但是,如果设置它没有问题,我可能不会听说它。

要设置它,请执行以下操作:

  • 添加一个在ASP.NET和MvcSiteMapProvider之间共享的XML文件,并在其中配置所有节点。确保使用NuGet包安装的Mvc.sitemap文件中的名称空间声明。请注意,您可以安全地添加MvcSiteMapProvider属性,XmlSiteMapProvider只会将它们视为自定义属性(基本上会被忽略)。为了能够在WebForms和MVC之间导航,您应该使用url属性,而不是配置controlleraction等。
  • Webforms将使用XmlSiteMapProvider和所有使用它的控件来显示菜单和SiteMapPath。
  • MVC会使用MvcSiteMapProvider和它的HTML helpers来显示类似的功能。请注意,您可以自定义HTML帮助器或构建自己的帮助器(如果需要的话)。对于
  • 的安全性调整,您可以使用xmlRolesAttribute

WebForms,并使用MVC中的AuthorizeAttribute。

  • 对于本地化,您几乎只需遵循MVC

这基本上就是默认的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提供任何反馈。

票数 0
EN

Stack Overflow用户

发布于 2016-10-26 15:09:24

您可以使用两个不同的站点地图文件。一个用于webforms的带有XMLSiteMapProvider的web.sitemap,另一个用于带有MVCSiteMapProvider的MVC部分Mvc.Sitemap。对于webforms,指定url,而不是Mvc.SiteMap中的操作和控制器。我目前正在我们的混合项目中使用它,它工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27167104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档