1

我需要实现的功能是:Confirmbutton_Click

显示一个弹出/对话框:

单击是,我需要验证提交的电子邮件 ID 和其他个人详细信息。如果验证失败,则显示错误消息并返回 false。如果电子邮件 ID 和其他详细信息正确,则隐藏/显示几个 Div。

我已经在 jQuery 中实现了这个功能,但现在我应该在服务器端实现它。首先是因为 Div 每次都没有正确显示,其次是出于安全考虑。

我在谷歌上搜索的建议要求在服务器端编写完整的代码(在脚本标签中)。这太多了,因为我需要验证许多字段。
另外,有没有办法我可以在客户端进行验证并返回服务器端并根据验证结果显示我的 Div?客户端脚本将在服务器端之前执行,因此是可以实现的。

我不想为此创建一个新的弹出页面。

如果有人可以帮助我提供正确的代码或指向一个的指针,如何验证和显示 div(显示要从服务器端完成的 div)。

更新:

我在中途,如果有人可以帮助我:

在页面加载(不是回发)中,我添加了:

btnConfirm.Attributes.Add("onclick", "if(confirm('Confirm - Are you sure you want to go ahead.')) onConfirm(); else return false;");

在 jQuery 代码中,我将验证添加为:

function onConfirm() {    
    //Check if email-id is not blank, else show message and return to the page
    if (isBlank($('#emailAddress').val()) == false) {
        $('#errorBlankEmail').show();
        return false;
    }
}
    //Text validation functions
    function isBlank(valueSent) {
        if ($.trim(valueSent) == "")
            return false;
        else
            return true;
}

和按钮代码为:

<asp:Button ID="btnConfirm" runat="server"   Text="Confirm"  onclick="Confirm_Click" />

以及用于此的服务器端代码:

protected void Confirm_Click(object sender, EventArgs e)
    {
        divConfirm.Visible = true;
    }

现在,当我单击按钮时,它会一直工作,直到我验证并且验证失败,它会执行服务器端代码。如果客户端点击代码中的结果为假,有没有办法可以避免服务器端代码?

4

4 回答 4

0

您可能想尝试使用http://www.telerik.com/ ASP.net AJAX 控件或 Ajax Control Toolkit Modal Extender。我都用过,它们正是你所追求的。

于 2012-11-07T13:09:20.513 回答
0

我不建议这样做,但也许这会为您指明更好的解决方案。

正如你提到的,从服务器端你可以使用静态函数

var script = @"<script> $("#somediv").dialog()  </script>", false);
ClientScript.RegisterClientScriptBlock(GetType(), "some", , false);

(#somediv) 封装了用户控件并包含所有验证逻辑。问题是您的 div 的服务器验证,因为在 div 上回发后(在服务器端验证)您的 div 将被关闭,并且您需要再次从服务器上启动它,这种方法会搞砸事情......我会使用将返回结果的新弹出窗口。

于 2012-11-07T13:14:34.777 回答
0

你不会在服务器上得到确认。服务器在请求/响应中没有用户交互的概念。它只能接收请求、处理请求并发送响应。

您可以做的是发送一个请求以生成一个要求用户确认的响应。然后用户将单击“是”,这将创建另一个请求。服务器将接收请求,处理请求并发送响应。

但是您不能做的是在服务器上处理请求时要求用户确认请求。该确认必须已经完成。

您可以在服务器上验证请求,但这只是标准验证。那里没什么好做的。

于 2012-11-07T13:22:21.400 回答
0

您可以使用jQuery ui 对话框 - 模态确认

并在确认使用 __doPostback 触发事件“Confirmbutton_Click”

这只是另一种方式,但它不会像 Telerik 控制那样简单。

<script>
    $(function() {
        $( "#dialog-confirm" ).dialog({
            resizable: false,
            height:140,
            modal: true,
            buttons: {
                "Confirm": function() {
                    $( this ).dialog( "close" );
                    __doPostBack('#<%= Confirmbutton.UniqueID %>', null)
                },
                Cancel: function() {
                    $( this ).dialog( "close" );
                }
            }
        });
    });
    </script>

而作为 html,

<div id="dialog-confirm" title="Empty the recycle bin?">
    <p><span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>These items will be permanently deleted and cannot be recovered. Are you sure?</p>
</div>
<asp:button id="Confirmbutton" runat="Server" OnClick="Confirmbutton_Click" style="display:none;" />
于 2012-11-07T13:24:34.437 回答