ASP.NET 网络表单确认



我是使用.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 个按钮。 第一个最初是可见的,并标记为"提交"。 第二个最初将被隐藏并标记为"确认"。 "提交"按钮将在单击时回发并执行服务器端检查/验证。 如果这些检查失败,将显示相应的错误消息。 如果这些检查通过,将显示相应的"请确认您的提交"类型的消息,"提交"按钮将隐藏,第二个"确认"按钮将变为可见。 单击该"确认"按钮时,它将再次回发并完全提交。

编辑:我忘了提,在我最初发布后,我想到了更多的事情。 如果服务器端验证成功,您必须保护字段不被编辑,因为您显然不希望用户更改值,然后单击"确认"按钮。 这意味着禁用所有输入控件 - 如果您有很多输入控件,这可能会很痛苦。 您还必须给他们一种(有意(编辑的方法,以防服务器端验证通过,您显示确认,并且他们改变主意 - 所以基本上您需要第三个"取消/编辑"类型的按钮,它将表单重新置于编辑模式并显示您的初始提交按钮。

最新更新