Gridview中的动态内容

时间:2010-03-12 23:21:37

标签: asp.net javascript gridview

我有一个有几列的gridview,我想实现以下目标:
如果用户未被授权显示正常列 如果用户已获得授权:当用户将鼠标悬停在第一列(使用javascript)时,为第一列文本设置鼠标悬停事件并在第二列中显示一些按钮(对于非授权用户不可用)。

我有两个困难:

第一个应该在何时何地创建按钮? 我有2个选项,
我可以在设计时创建这些按钮,在gridviews模板中将Visible值设置为false,然后在codebehind中将其设置为true,如果用户已获得授权。
如果用户被授权,第二个选项是在gridview_RowCreated事件(或任何其他事件)中动态创建此按钮。

第二个难点是设置javascript事件以显示按钮,只有在用户被授权时才应添加事件! 请注意,事件和按钮应该具有Javascript函数的某种id匹配,以便在触发事件时知道它应该隐藏/取消隐藏的内容。

我该怎么做,最佳做法是什么? 我知道这是一个很长的问题,但请尽量帮助:)

2 个答案:

答案 0 :(得分:0)

如果问题是按钮的有条件授权,那么如果用户未获得授权,则不会从服务器端输出。也就是说,不要渲染按钮并使用JavaScript显示/隐藏它们,因为恶意用户可以在客户端操纵JavaScript,以显示来自浏览器DOM的隐藏按钮,这是您无法控制的。如果您的服务器检查不到位,这会增加他们获取访问权的机会。

使用您提到的代码隐藏,但有条件地将按钮发送到客户端。如果你发送它们,它们是可见的,如果你不发送,它们不是因为它们不在那里展示。然后,您不必另外使用JavaScript来完成这项工作。

这假设您已经使用了Webforms身份验证或类似的机制,因此您知道用户是否从服务器端获得授权,您可以在那里进行检查并根据它在代码中做出相应的决策。

也许我不理解你想要实现的目标的完整背景,但我正在努力传达安全性问题并围绕它进行推理。在开发中有很多地方可以使用JavaScript,但这次可能是错误的选择。

然而 ...如果按钮不是真正的安全问题而且无效的用户获得访问它们不会对宏观方案造成伤害,那么就会忘记以上所有内容。< / p>

答案 1 :(得分:0)

您要做的是使用ASP.Net Ajax Toolkit中的HoverMenu控件。这将处理所有的javascript,以便您显示和隐藏鼠标悬停和鼠标移出的按钮。您可以在代码中启用或禁用HoverMenu来处理您的授权。