我有一个基于身份验证角色的系统:不同的角色被重定向到不同的文件夹,每个文件夹中都有一个web.config,它只允许访问特定的用户名。使用MasterPage属性作为属性扩展ASP.NET页面
很少有角色具有与GridView相同的默认页面,它们根据角色(显示不同的列,事件触发不同的方法等)以不同的方式作出反应。
所以我的问题是,每次我需要对页面进行微小更改时,我需要将相同的更改复制/粘贴到其他文件夹中的所有其他默认页面。
就我通过创建一个DefaultFather类来解决的代码而言,该类扩展了System.Web.UI.Page,并且每个Default类都从DefaultFather继承。这样,如果我不声明一个Page生活方法,DefaultFather方法将被触发。
但是图形部分(html,javascript,asp组件等)呢?
我为Default页面创建了一个NestedMasterPage,但每次我需要更改控件(gridview,buttons,linkbuttons)的外观/行为时,我必须使用FindControl()方法。
还没有真正的另一种方法来解决这个问题? 我想使用Page_Load()方法使用FindControl()搜索每个控件,并将它们保存到属性中供以后使用,但它看起来确实不是一个好的解决方案。 这将是很好,如果我可以使用masterpage组件作为属性,但我认为为了做到这一点,我应该创建公共属性,我不知道它是否会导致某种安全问题。
有什么建议吗?
顺便说一句,如果masterpage是解决方案,我应该删除DefaultFather类,并将代码直接放入主页面?或者为代码创建另一个类是否是一个好主意?
有趣的是,事件呢?我如何回应示例的OnClick事件? – Simone 2013-04-10 21:24:02
请参阅我的编辑示例。 – 2013-04-10 21:40:53
我不能只声明:private SiteMaster master;并在默认类的Page_Init()中初始化它?对我来说,使用新的东西可能会导致问题,这似乎更容易。还有最后一件事,如果我可以......那么现在我有一个主文件和一个基本的DefaultFather类,以及其他一些扩展了DefaultFather的默认类。如果我问一个关于如何处理基于不同的default.aspx应该采取不同行为的OnClick()事件的例子,这是否太多了? – Simone 2013-04-10 21:53:30