繁体   English   中英

有没有办法通过从后面的代码调用函数在 ASP.Net VB 中创建是/否弹出窗口?

[英]Is there a way to create a Yes/No popup in ASP.Net VB by calling a function from the code behind?

我需要检查 ASP.Net 网页后面代码中的变量,如果变量是某个值,我想显示一个带有消息和是/否按钮的模式弹出窗口。 消息将从后面的代码发送。

你真的不能这样做。 但是,您可以获得大致相同的效果。

第一种方法 - 非常简单

这假设用户要单击表单上的按钮。 所以,说一个删除按钮,或者说运行一个进程的一些动作。

你把你的标准 asp.net 按钮放到你的表单上,如下所示:

    <asp:Button ID="Button3" OnClientClick="return myconfirm();"
        runat="server" Text="Delete record" Width="90px" />
    <script>
        function myconfirm() {

            var x = confirm("Do you want to delete this record");
            return x;
        }
    </script>

所以上面将首先运行“js”脚本代码。 注意“在客户端点击”。 如果该函数返回 true,则按钮(服务器端)背后的标准代码将运行。

事实上,在大多数情况下,用户“必须”点击某物才能执行操作。 你真的说点击一个按钮,然后背后的代码开始运行。 但是,在这个所谓的“往返”期间,您不能让代码停止并要求输入,例如是/否。

为什么? 因为当您单击一个按钮时,网页会传送到服务器。 你背后的代码开始运行。 您在网页上更改的任何内容现在都随背后的代码而更改。 然后整个页面被发送回浏览器。 如果您在代码隐藏时停止或中断代码,则网页永远不会被发送回浏览器,直到您隐藏的所有代码都 100% 完成并完成。 当所有后面的代码都完成后,页面就会被发送回浏览器。 所以你不能中断代码。

还有其他几种弹出对话框的方法。 并且由于代码隐藏,您可以弹出并启动对话框,但这实际上是您的代码所做的最后一件事,这将意味着一个脚本块被发送到网页中也被删除发送到客户端。

代替 js 中的“蹩脚”confirm(),你当然可以使用 say jQuery.UI,与可怕、丑陋和简单的确认对话框相比,它允许你制作一些半体面的对话框。 公平地说,Chrome 浏览器的 confirm() 确实看起来不错,但是大多数浏览器中的 confirm()/alert() 对话框还有很多不足之处,称它们为“丑陋”是一种善意。

询问/获取提示的另一种方式? 不要使用确认/对话框。 只需将您的是/否放在表单上,​​就像单选按钮一样。 如果您有 2-3 个问题,那么只需设置 auto-post back = true,然后在第一个是/否(例如单选按钮组)之后进行回发,然后显示下一个问题。 这对我发现背后的代码非常有效。

最后但并非最不重要的? 如果它是代码的最后一件事或最后一行,您当然可以让代码背后弹出一个对话框。 你可以做一个 registerScipt 块,它可以弹出一个是/否对话框。 但是,由于它只是您可以在后面的代码中执行的最后一段代码,因此在 99% 的情况下,您的后面的代码将是用户单击 asp.net 按钮的结果。 既然是这样,那么上面的第一个示例要求/确认再次运行按钮代码就足以满足 99% 的情况。 所以请记住,在往返过程中,您不能在代码中隐藏任何阻塞代码。 因此,您不能出现阻塞提示,然后后面的代码会继续。 后面的代码只需要一次,一次更改就可以运行。 该代码在页面在服务器上启动时运行。 您的代码运行、更改内容、控件值,然后一旦完成,页面将返回客户端。 这就是所谓的往返。

如上所述,您可以在往返设置中确定浏览器在页面返回浏览器后提示是/否对话框。 例如,我确实说设置了一个吐司消息。 如果一个人说点击了某个按钮,然后说要做某事(比如下载一个文件),而该文件不存在? 我可以让浏览器说吐出一条吐司消息。 所以你可以在后面的代码中触发一个对话框,或者 toast 消息,甚至可以从后面的代码中弹出一个对话框,但请记住,toast 消息的设置或弹出一个对话框将是最后的操作你在后面的代码中做,然后浏览器返回到客户端,显示出来,然后你的对话框弹出。 由于该对话框弹出,您可以(并且将会)然后将代码隐藏(和另一个往返)发生。 我可以发布一个如何执行此操作的示例,但在此示例中,当隐藏代码正在设置和触发对话框时,不会有代码阻塞,或者等待是/否,然后代码块继续。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM