【问题标题】:Issue on onclick event of Logout button in Master page主页面中注销按钮的 onclick 事件问题
【发布时间】:2013-12-28 23:17:20
【问题描述】:

我在我的应用程序中使用 twitter 引导程序。我在母版页中有一个注销按钮,并且在 .aspx 页面(内容页)中有验证。

当我点击注销按钮时,它正在验证内容页面中的文本框字段(此处不应发生)。

这是我的代码;

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>

当我点击注销按钮时,如何停止验证内容页面?

请帮帮我。

【问题讨论】:

  • 这只是我在使用 WebForms 时遇到的问题之一。默认项目喜欢将整个内部主体包裹在一个表单中,给有多个按钮的人带来问题,让大多数人认为页面上不能有多个表单,无法打破一个大表单的设计模式.
  • 如果您只是将注销按钮设为链接会怎样。
  • @ MikeSmithDev :我需要清除会话变量。这就是问题所在。我尝试将其作为 href="..." 给出,但我需要清除会话变量,然后再调用另一个.
  • 是的,您可以使用链接和查询字符串来做到这一点。检查母版页中的查询字符串,如果存在,则清除会话。不理想(不喜欢为 URL 提供某些功能),但可以选择。
  • 我尝试使用 ,效果很好。谢谢。

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


【解决方案1】:

在您的按钮上使用CauseValidation=false

更多关于相同的讨论是

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

编辑 1

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

Form Validation With Bootstrap (jQuery)

编辑 2

我已经编辑了小提琴,用锚点替换了取消按钮,然后它就可以工作了。所以我认为您可以在代码中使用相同的链接按钮。

JSFiddle的链接

【讨论】:

  • @ Shekhar:我需要清除会话变量。这就是问题所在。我尝试将其设置为 href="...",但我需要清除会话变量,然后再调用另一个.
  • @Prathiba 你为什么不试试asp:linkbutton 它是你.cs 页面上的点击事件。
【解决方案2】:

只需将注销按钮的CausesValidation 属性设置为false

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

编辑

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多