我正在寻找解决问题的其他方法。我们使用ElFinder来浏览文件,我们希望允许用户通过右键单击上下文菜单(“更改权限”)更改文件元素的访问权限。到目前为止我提出的解决方案是在jQuery模式对话框窗口中加载服务器端ASP.NET用户控件。此用户控件将包含添加/删除用户对所选元素的访问权所需的逻辑。
jQuery Dialog脚本看起来像这样(为了便于阅读略微改变),其中DisplayItemAccessConfig()是从上下文菜单中调用的方法:
<!-- access control script -->
<script type="text/javascript" charset="utf-8">
function DisplayItemAccessConfig() {
$.getJSON('AccessRights.ashx', function (data) {
var itemName = data["itemName"];
/* set new title (JUST FOR TESTING) */
$(dialog).dialog('option', 'title', itemName);
/* open modal dialog --> */
$(dialog).dialog('open');
});
}
$(function () {
$("#dialog").dialog({
autoOpen: false,
modal: true,
buttons: {
"Ok": function () { $(this).dialog("close"); },
"Cancel": function () { $(this).dialog("close"); }
},
open: function (type, data) {
$(this).parent().appendTo("form");
}
});
});
</script>
挑战1:找到每次显示jQuery弹出窗口时重新加载用户控件的方法 - 这是检索所选元素的当前访问设置。现在它在首次加载页面时加载,因为它只是一个div元素,其中包含一个更新面板,其中包含一个占位符,用于我的usercontrol,并且可见性设置为none。任何人都有这方面的提示吗?
挑战2:虽然我想要找出那个但我认为在寻求其他意见时可能是值得的。有没有更好的方法来解决这个问题?我应该使用带有HTML的纯jQuery并调用服务器端.ashx方法来检索数据,而不是ASP.NET用户控件吗?
答案 0 :(得分:1)
您可以通过在uploadpanel内创建一个隐藏按钮,然后像这样触发它来执行此操作:
__ doPostBack('&lt;%= Button.ClientID%&gt;','');
就个人而言,我会删除UpdatePanel并进行jQuery AJAX调用以更新对话框窗口的内容,但这取决于用户控件的复杂程度。很难说没有看到更多的代码。