我目前正在构建一个CMS系统,我需要一种简单的方法来包含或排除组件。
我的第一个想法是使用asp.net mvc区域功能,以识别每个组件本身。
但是从我看到的情况来看,区域功能有problems,所以也许这不是一个好主意。
答案 0 :(得分:4)
在对区域功能有一些经验之后,我认为区域最适合您站点中完全不同的区域,不与根区域共享相同的母版页。
就我而言,这些组件是根站点的附加组件,并且共享相同的母版页,不是最佳实践使用区域。
答案 1 :(得分:2)
对于引用通用母版页的区域来说,这太不走运了!杀了一天无法解决这个问题。
可能看起来最接近于为主页面实现正确的“区域”标记的技巧here,即建议在主人的OnPreRender中剪切以下内容:
var area = ViewContext.RouteData.DataTokens["area"];
ViewContext.RouteData.DataTokens["area"] = "";
base.OnPreRender(e);
ViewContext.RouteData.DataTokens["area"] = area
可悲的是,它对我不起作用主要是因为我的ActionLinks不是直接在master中生成的,而是在sibling< asp:content />中生成,因为仍然使用了页面的原始区域。