我有一个asp:Button,用于在OnClick事件上触发函数后面的代码。在那个OnClick事件中发生了几件事情,在这些事情中,我在数据库中检查是否需要向用户询问是或否问题。为此,我需要一个消息框。首先,我这样做:
protected void MyButton_Onclick(object sender, EventArgs e)
{
// lots of stuff happening
bool iNeedToAskTheUser = INeedToAskTheUser(stuff);
if (iNeedToAskTheUser)
{
DialogResult result = MessageBox.Show("Do you want to fix all objects?", "Fix objects", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes) // do stuff
}
// some other stuff
}
这在本地工作正常,但在部署时没有,所以我想我需要使用ScriptManager.RegisterStartupScript。我可以在ASPX页面上添加javascript来激活对话框并将响应保存在我可以查看的隐藏控件中,但是我不想激活对话框,除非我必须这样做,我之前检查过我在上面的代码中执行DialogResult。所以当用户点击按钮时我不能立即这样做。
有没有什么方法可以在我的_OnClick代码的“中间”使用ScriptManager.RegisterStartupScript,这样我就可以选择是否实际显示按钮,然后还知道用户是否单击是或否,(最好)不做回发?
我一直在思考和测试两种不同的解决方案:
我确信使用Ajax或jQuery有很好的解决方案,但这是一个相当简单的功能,开发时间不会太长,所以这有点超出了这个范围。
相反,我将使用一个解决方案,我知道用户在点击按钮之前会对问题做出什么反应。 (虽然默默地低声嘀咕道:“这是2019年,没有好办法从.Net网络项目中的代码中启动是/否对话框......”。我需要回到不使用网络)。