【发布时间】:2013-04-10 20:21:20
【问题描述】:
我有一个基于身份验证角色的系统:不同的角色被重定向到不同的文件夹,每个文件夹中都有一个 web.config,它只允许访问特定的用户名。
很少有角色具有与 gridview 相同的默认页面,它们会根据角色以不同的方式做出反应(显示不同的列,事件触发不同的方法等)。
所以我的问题是每次我需要对页面进行细微更改时,我都需要将相同的更改复制/粘贴到其他文件夹中的所有其他默认页面。
就代码而言,我通过创建一个扩展 System.Web.UI.Page 的 DefaultFather 类解决了问题,并且所有其他 Default 类都继承自 DefaultFather。这样,如果我不声明Page-life-method,就会触发DefaultFather方法。
但是图形部分(html、javascript、asp 组件等)呢??
我仅为默认页面创建了一个 NestedMasterPage,但每次我需要更改控件(gridview、按钮、链接按钮)的外观/行为时,我都必须使用 FindControl() 方法。
真的没有其他方法可以解决这个问题吗? 我正在考虑使用 Page_Load() 方法通过 FindControl() 搜索每个控件并将它们保存到属性中以供以后使用,但它看起来并不是一个好的解决方案。 如果我可以将母版页组件用作属性会很好,但我认为为此我应该创建公共属性,我不知道这是否会导致某种安全问题。
有什么建议吗?
顺便说一句,如果母版页是解决方案,我应该删除 DefaultFather 类并将代码直接放入母版页吗?还是为代码设置另一个类是个好主意?
【问题讨论】:
标签: asp.net master-pages