gpt4 book ai didi

c# - MVCSiteMapProvider 不会对菜单使用 Razor 模板

转载 作者:太空宇宙 更新时间:2023-11-03 10:28:20 26 4
gpt4 key购买 nike

我现在很喜欢通过 Nuget 使用制作精良的 MVCSiteMapProvider,但我遇到了障碍。

我正在尝试修改 @Html.MvcSiteMap().Menu() 助手的模板。我正在修改的文件是 ..\Views\Shared\DisplayTemplates\MenuHelperModel.cshtml,无论我对文件进行什么更改,模板在呈现时都不会更新。

我用 notepad++ 完成了“全部查找”,发现在 MvcSiteMapProvider.dll 中有两个模板,一个用于经典的 asp.net,一个用于 Razor。很明显,正在调用 .dll 文件中的模板 - 但如何才能避免这种情况?

值得一提的是,虽然模板位于 ..\Views\Shared\DisplayTemplates\,但站点配置为使用不同的文件夹来放置 View 。

编辑:如果我将模板名称传递给助手,仍然没有效果。

最佳答案

模板化助手是 MVC 创建的,而不是 MvcSiteMapProvider 之一。我强烈怀疑您的问题是由于重新配置您的 Views 文件夹引起的。 MVC does not support a way to reconfigure your templates folder .

但正如已接受的答案中所指出的,可以将它们放在 ~/Views/CurrentController/DisplayTemplates/ 下。您可以使用该功能将模板放入新配置的文件夹中。不过,这意味着您需要为每个 Controller 添加一份模板副本。

最好的解决方案是不要更改 MVC 文件夹的默认值。

如果那不是一个选项,您可以考虑 rolling your own Menu HTML helper基于 code from the current one返回 HtmlString 而不是使用模板。

模板化的助手更好,因为您可以在部署后编辑代码(这就是我们这样做的原因),但它附带一个警告,您必须依赖 MVC 的默认文件夹结构才能使用它们。

关于c# - MVCSiteMapProvider 不会对菜单使用 Razor 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31024989/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com