在asp.net中显示确认/对话框(c#)

时间:2012-11-07 12:55:46

标签: c# jquery asp.net dialog popup

我需要实现的功能是: Confirmbutton_Click

显示弹出/对话框:

点击是,我需要验证提交的Email-Id和其他个人详细信息。     如果验证失败,则显示错误消息并返回false。     如果email-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;
    }

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

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

如您所述,从服务器端可以使用静态功能

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

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

答案 2 :(得分:0)

您将无法在服务器上获得确认。服务器在请求/响应中没有用户交互的概念。它只能接收请求,处理请求并发送响应。

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

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

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

答案 3 :(得分:0)

您可以使用jQuery ui Dialog - Modal Confirmation

并确认使用__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;" />