我是使用.NET进行Web编程的新手。
我正在开发一个带有网络表单的网页,我希望在某个时刻以编程方式显示一个模式窗口,供用户根据问题接受或取消。JavaScript的"确认"功能到底是什么。
我试图让它调用一个JavaScript函数:
Page.ClientScript.RegisterStartupScript (this.GetType (), "CallMyFunction", "MyFunction()", true);
但是我需要在不重新加载页面的情况下执行此操作,并且我还需要控制用户是接受还是取消,我不知道该怎么做。
我也尝试使用DevExpress的ModExPopupExtender控件来获取它。
有人可以告诉我一种简单的方法来获得我想要的东西吗?
我无法理解在Web编程中如此常见的东西,以及PHP + javascript不会造成任何问题的原因如何如此复杂。
所有操作都以代码隐藏上的一键式事件开始:
protected void btn1_Click(object sender, EventArgs e)
{
//I make a series of checks
//If certain conditions I want to show the confirm
//According to the user has chosen ok or cancel will perform a certain action
}
Onclientclick对我没有帮助,因为在启动"确认"之前,我必须在服务器端进行一些检查。 谢谢。
您可以使用 OnClientClick,这是大多数 Web 控件上的属性。
我喜欢只调出一个简单的confirm()
对话框,如果用户单击"确定",该对话框将执行服务器代码,如果用户取消操作,则不执行任何操作:
<asp:Button runat="server" ID="btnSave" Click="btnSave_Click" Text="Save"
OnClientClick="return confirm('Are you sure you want to do this thing?');" />
你也可以用它做其他事情,但要记住的关键是,你在OnClientClick
中所做的任何事情都会在页面被回发到服务器之前发生。
这也是完全有效的:
<asp:Button runat="server" ID="btnSave"
OnClientClick="showModalConfirm('some message goes here');" ... />
<script>
function showModalConfirm(msg)
{
$(".modal .message").innerHtml(msg);
$(".modal").Show();
}
</script>
您可以以完全相同的方式设置 OnClientClick 应在代码隐藏中执行的操作:
protected void Page_Load(object sender, EventArgs e)
{
btnSave.OnClientClick = "return confirm('Are you sure you want to do this thing?');";
}
你可以在 c# 中使用以下代码来调用 javascript 函数。下面的代码将执行 afterpostback(( javascript 函数:
ClientScript.RegisterStartupScript(GetType(), Javascript, "javascript:afterpostback();", true);
您可以在javascript函数中编写代码以显示任何div或弹出窗口:
<script language="javascript" type="text/javascript">
function afterpostback() {
//Here you can write javascript to display div/modal
}
</script>
我以前处理这个问题的一种方法是在页面上有 2 个按钮。 第一个最初是可见的,并标记为"提交"。 第二个最初将被隐藏并标记为"确认"。 "提交"按钮将在单击时回发并执行服务器端检查/验证。 如果这些检查失败,将显示相应的错误消息。 如果这些检查通过,将显示相应的"请确认您的提交"类型的消息,"提交"按钮将隐藏,第二个"确认"按钮将变为可见。 单击该"确认"按钮时,它将再次回发并完全提交。
编辑:我忘了提,在我最初发布后,我想到了更多的事情。 如果服务器端验证成功,您必须保护字段不被编辑,因为您显然不希望用户更改值,然后单击"确认"按钮。 这意味着禁用所有输入控件 - 如果您有很多输入控件,这可能会很痛苦。 您还必须给他们一种(有意(编辑的方法,以防服务器端验证通过,您显示确认,并且他们改变主意 - 所以基本上您需要第三个"取消/编辑"类型的按钮,它将表单重新置于编辑模式并显示您的初始提交按钮。