【问题标题】:How can you conditionally display links in jqgrid?如何在 jqgrid 中有条件地显示链接?
【发布时间】:2011-09-28 13:56:55
【问题描述】:

我有一个 jqgrid,我有一个自定义格式化程序,可以根据我的需要格式化和显示链接。这确实工作正常,但我有一个问题。我想有条件地显示链接。我该怎么做?

例如如果此人是管理员,则向他显示所有链接,例如编辑、删除等(这些链接映射到控制器中的操作方法)。但如果此人是非管理员用户,则仅显示查看链接并隐藏所有其他链接。

我只需要一个如何完成此任务的一般策略。一种策略是我在我的 json 数据中添加一个布尔字段,这将表示是否要显示编辑、删除等链接。然后在我的格式化程序中,我可以查看行数据并决定是否返回显示链接。

有没有更好的方法?

【问题讨论】:

    标签: c# jquery asp.net-mvc asp.net-mvc-3 jqgrid


    【解决方案1】:

    您在来自服务器的 JSON 响应中包含附加数据的建议听起来不错。值得一提的是,您应该以任何方式阻止非管理员的数据编辑。隐藏或不创建链接以进行编辑不是一项安全功能,但主要是 GUI 改进以防止不允许的操作。如果您对实现有一些技术问题,您应该在问题中包含相应的代码。

    如果您使用额外的表单编辑,那么the answer 中的the demothe another answer 中的another demo 也会对您有所帮助。

    【讨论】:

    • 谢谢奥列格。我了解隐藏链接只是 GUI 改进。服务器端安全完全是另一回事。我可以通过使用 [Authorize(Roles="Admin")] 或类似的东西来做到这一点。
    • @Anthony:不客气!例如,[Authorize(Roles="Admin")] 的用法可以很好地用于 ASP.NET MVC 操作。您应该只自定义在低权限的情况下将用户发送的消息。让用户清楚明白失败的原因。
    • 那是我不明白的。如何自定义消息?实际上,如果用户不是管理员,它会将用户抛出到登录 url。我正在使用表单身份验证。该属性没有任何选项可用于显示 ErrorMessage。也许我可以扩展属性并设置 TempData["Message"] 然后在登录页面上显示该消息。只是一个想法!如果您知道答案,可以将其发布到其他地方,如果您想让我创建一个新问题,请告诉我,因为这与问题没有直接关系。
    • @Anthony:我个人不会在操作的第一行 inside 中设置[Authorize(Roles="Admin")] 属性和验证用户角色。您可以使用我描述的here 的方式来使用[HandleJsonException]。在这种情况下,您可以检查将引发哪个授权异常并自定义来自服务器的错误响应。
    • 嗯,当我第一次看到它时,你的著名代码让我惊呆了。
    猜你喜欢
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 2018-04-09
    • 1970-01-01
    相关资源
    最近更新 更多