我目前正在构建一个 CMS 系统,我需要一种简单的方法来包含或排除组件。
我的第一个想法是使用 asp.net mvc 区域功能,来识别每个组件本身。
但据我所见,区域特征存在问题,所以也许不是什么好主意。
我目前正在构建一个 CMS 系统,我需要一种简单的方法来包含或排除组件。
我的第一个想法是使用 asp.net mvc 区域功能,来识别每个组件本身。
但据我所见,区域特征存在问题,所以也许不是什么好主意。
在对区域功能进行了一些体验之后,我认为区域最适合您网站中完全不同的东西,即不与根区域共享相同的母版页。
就我而言,这些组件是根站点的附加组件,并且共享相同的母版页,使用区域不是最佳实践。
对于引用公共母版页的区域来说,这真是太不幸了!杀了一天来解决这个问题无济于事。
可能,这里描述了看起来最接近为母版页实现正确“区域”标记的技巧,也就是说,建议在 master 的 OnPreRender 中剪断以下内容:
var area = ViewContext.RouteData.DataTokens["area"];
ViewContext.RouteData.DataTokens["area"] = "";
base.OnPreRender(e);
ViewContext.RouteData.DataTokens["area"] = area
可悲的是,它对我不起作用,主要是因为我的 ActionLink 不是直接在母版中生成的,而是在兄弟 <asp:content/> 中生成的,因为它仍然使用页面的原始区域。