主页面中的“注销”按钮的onclick事件问题

时间:2013-12-11 05:45:21

标签: asp.net twitter-bootstrap jquery-validation-engine

我在我的应用程序中使用了twitter bootstrap。我在主页面中有一个注销按钮,我在.aspx页面(内容页面)中有验证。

当我点击Logout按钮时,它正在验证Content页面中的文本框字段(这不应该在这里发生)。

这是我的代码;

Master.aspx:

<div class="navbar">
    <div class="navbar-inner">
        <div class="container-fluid">               
            <ul class="nav ace-nav pull-right">                   
                <li class="blue" style="background-color: #5090C1"><a data-toggle="dropdown" href="#" class="user-menu dropdown-toggle">                       
                    <span><small>Welcome,</small>
                        User Name  </span> <i class="icon-caret-down"></i></a>
                    <ul class="user-menu pull-right dropdown-menu dropdown-yellow dropdown-caret dropdown-closer" id="user_menu">                                                     
                        <li><a href="javascript:void(0);" onclick="Logout();"><i class="icon-off"></i>Logout</a></li>
                    </ul>
                </li>
            </ul>
        </div>
    </div>
</div>
<div id="main-container" class="main-container container-fluid">
    <div class="main-content">
        <div class="page-content">
            <asp:ContentPlaceHolder ID="MainContent" runat="server"></asp:ContentPlaceHolder>
        </div>
    </div>
</div>

<asp:Button ID="btnLogout" OnClick="btnLogout_Click" runat="server" class="hidden" />
<script type="text/javascript">
    function Logout() {
        $("#btnLogout").click();
    }
</script>

Master.aspx.cs:

 protected void btnLogout_Click(object sender, EventArgs e)
    {
        Session.Clear();
        Session.Abandon();
        Session.RemoveAll();
        Response.Redirect("~/SampleWindowCloser.htm");              
    }

Default.aspx的:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" MasterPageFile="~/Master.master"
    Inherits="Default" ClientIDMode="Static" %>
<asp:Content ID="TestContentBody" runat="server" ContentPlaceHolderID="MainContent">
    <div class="row-fluid">
        <div class="span6">
            <div class="control-group">
                <label class="control-label" for="txtName">Name</label>
                <div class="controls">
                    <input type="text" data-val="true" data-val-required="Name is required." title="Name" id="txtName">
                    <span data-valmsg-replace="true" data-valmsg-for="txtName" class="field-validation-valid text-warning red"></span>
                </div>
            </div>
            <div class="control-group">
                <label class="control-label" for="txtAge">Age</label>
                <div class="controls">
                    <input type="text" validation="name" description="Age" title="Age" id="txtAge">
                    <span data-valmsg-replace="true" data-valmsg-for="txtAge" class="field-validation-valid text-warning red"></span>
                </div>
            </div>
        </div>
    </div>
</asp:Content>

单击“注销”按钮后,如何停止验证内容页面?

请帮帮我。

2 个答案:

答案 0 :(得分:3)

在按钮上使用CauseValidation=false

关于同样的更多讨论

  1. i must add CausesValidation="False" to every ASP Button to work, why?
  2. RequiredFieldValidator and preventing CausesValidation
  3. 编辑1

    这是堆栈溢出中的类似问题,其中取消按钮不验证

    Form Validation With Bootstrap (jQuery)

    编辑2

    我已经编辑了小提琴,用锚取代按钮取消然后它起作用。所以我认为您可以在代码中使用链接按钮。

    JSFiddle

    的链接

答案 1 :(得分:1)

只需将您的退出按钮的CausesValidation属性设置为false

 <asp:Button ID="btnLogout" OnClick="btnLogout_Click" runat="server" class="hidden" CausesValidation="false" />

修改

如果您打算使用锚标记,则可以创建一个单独的注销页面,您只需清除pageLoad事件上的会话变量。使用锚标记重定向到此注销页面。