提问人:Chelynn 提问时间:9/22/2018 更新时间:9/22/2018 访问量:156
如何强制服务器端 (C#.NET) 操作在客户端操作之前发生按钮单击以避免弹出窗口被阻止?
How can I force the server side (C#.NET) actions to occur before the client side actions on a button click to avoid a popup to be blocked?
问:
我正在尝试创建三个按钮。ButtonAdd 添加一个新的介绍屏幕,并在新窗口中打开一个编辑器以对所述屏幕进行更改。仅当用户尚未添加介绍屏幕时,Button1 才可见。ButtonRemove 删除介绍屏幕。ButtonEdit 将打开编辑器以对介绍屏幕进行更改。ButtonRemove 和 ButtonEdit 仅在用户已添加简介屏幕时才可见。我遇到的问题是 ButtonAdd。
ButtonAdd 需要进行服务器调用才能实际创建对象并将其保存在数据库中:
serverClickFunction(object sender, EventArgs e)
{
activity.addIntroScreen();
}
ButtonAdd 还需要进行客户端调用才能打开编辑器。打开编辑器的 URL 需要知道有关新对象的某些信息(screenid 和 contentid):
function OpenEditIntro() {
var tviewer = window.open('../library/edit.aspx?&ScreenID=<%#
this.introScreenID %>&contentID=<%# this.introContentID%>')
tviewer.focus();
}
因此,本质上需要首先进行服务器调用。否则,客户端调用不知道该对 screenID 或 contentID 使用什么。所以我尝试从服务器或代码隐藏调用客户端函数。这样:
serverClickFunction(object sender, EventArgs e)
{
activity.addIntroScreen();
ScriptManager.RegisterStartupScript(this, this.GetType(),
"openEdit", "OpenEditIntro();", true);
}
这非常有效。除了弹出窗口阻止器不喜欢这个。因此,他们不允许弹出编辑窗口。有什么方法可以绕过这个弹出窗口被阻止的方法吗?还是有另一种我没有考虑的方法来解决这个问题?
答: 暂无答案
评论
edit.aspx
bob
bob
activity.addIntroScreen();
edit.aspx