Asp.net Button 组件在 Twitter-Bootstrap 主题下不起作用

2024-04-09

我一直在为我的 asp.net 网站主题使用 twitter-bootstrap,并且在尝试让一个简单的按钮执行事件时遇到了一些麻烦。该按钮是一个 asp 组件,从我在论坛中读到的内容来看,bootstrap 不能很好地管理 asp.net 组件,要么是脚本(最明显),要么是 CSS 问题(我不知道,我不是正在发生的事情的专家)。

据我所知,当我将按钮放入表单中时,按钮会执行操作,但据我所知,这不是应该发生的操作。

并重定向到同一页面,但具有以下参数:

?ctl00%24MainContent%24LogUsernameText=&ctl00%24MainContent%24LogPasswordText=&ctl00%24MainContent%24loginBtn=登录+登录%21

我尝试过在其他人的问题中看到的许多答案,例如使其呈现为 HTML 按钮并使其runat="server"然后在页面加载时为其添加一个实例。

我怎样才能度过这个难关?

母版页中的代码:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Main.master.cs" Inherits="Main" %>

<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title></title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width">

    <link rel="stylesheet" href="css/bootstrap.min.css">
    <style>
        body {
            padding-top: 60px;
            padding-bottom: 40px;
        }
    </style>
    <link rel="stylesheet" href="css/bootstrap-responsive.min.css">
</head>
<body>
    <!--[if lt IE 7]>
        <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
    <![endif]-->

    <form id="form1" runat="server">

    <div class="navbar navbar-inverse navbar-fixed-top">
        <div class="navbar-inner">
            <div class="container">
                <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </a>
                <a class="brand" href="Home.aspx">bitRain</a>
                <div class="nav-collapse collapse">
                    <ul class="nav">
                        <li><a href="Home.aspx">Home</a></li>
                        <li><a href="Upload.aspx">Upload</a></li>
                        <li><a href="FAQ.aspx">FAQ</a></li>
                    </ul>
                    <ul class="nav pull-right">
                        <li><a href="LoginN'Register.aspx">Sign Up</a></li>
                        <li class="divider-vertical"></li>
                        <li class="dropdown">
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Sign In <b class="caret"></b></a>
                            <ul class="dropdown-menu" style="padding: 15px; padding-bottom: 0px;">
                                <form id="navSignIn">
                                <li>Username</li>
                                <li><asp:TextBox ID="UsernameField" runat="server"></asp:TextBox></li>
                                <li>Password</li>
                                <li><asp:TextBox ID="PasswordField" runat="server"></asp:TextBox></li>
                                <li><asp:CheckBox ID="navRemember" runat="server" Text="Remember Me." /></li> 
                                <li><asp:Button ID="navLoginBtn" runat="server" Text="Sign In" CssClass="btn" style="clear: left; width: 100%; height: 32px; font-size: 13px;" /></li> 
                                </form>
                            </ul>
                        </li>
                    </ul>
                </div><!--/.nav-collapse -->
            </div>
        </div>
    </div>

    <div class="container">

        <div class="hero-unit">

            <asp:ContentPlaceHolder ID="MainContent" runat="server">
            </asp:ContentPlaceHolder>

        </div>

        <hr>

        <footer>
            <p>bitRain Project</p>
        </footer>

    </div>
    <!-- /container -->

    <script src="http://code.jquery.com/jquery-2.0.0.min.js"></script>
    <script src="js/bootstrap.min.js"></script>

    <script src="js/main.js"></script>
    </form>
</body>

页面中的代码块:

<div class="span6 form-horizontal">
            <div class="heading">
                <legend class="form-heading">Sign In</legend>
            </div>
            <div class="control-group">
                <label class="control-label" for="inputUsername">Username</label>
                <div class="controls">
                    <asp:TextBox ID="LogUsernameText" runat="server"></asp:TextBox>
                </div>
            </div>
            <div class="control-group">
                <label class="control-label" for="inputPassword">Password</label>
                <div class="controls">
                    <asp:TextBox ID="LogPasswordText" runat="server" TextMode="Password"></asp:TextBox>
                </div>
            </div>
            <div class="control-group">
                <div class="controls">
                    <label class="checkbox">
                        <asp:CheckBox ID="LogRemember" runat="server" Text="Keep me signed in |" />
                        <a href="#" class="btn btn-link">Forgot my password</a>
                    </label>
                    <asp:Button ID="loginBtn" runat="server" CssClass="btn" Text="Sign In!" Width="220px" OnClick="loginBtn_Click" />
                </div>
            </div>
        </div>

.cs 文件上的代码:

public partial class LoginN_Register : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

protected void loginBtn_Click(object sender, EventArgs e)
{
    Account log = new Account();
    string username = LogUsernameText.Text;
    string password = LogPasswordText.Text;
    string authentication = log.UserLogin(username, password);
    if (!string.IsNullOrEmpty(authentication))
    {
        // Create a new ticket used for authentication
        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
           1, // Ticket version
           username, // Username associated with ticket
           DateTime.Now, // Date issued
           DateTime.Now.AddMinutes(30), // Date to expire
           true, // "true" for a persistent user cookie
           authentication, //Role
           FormsAuthentication.FormsCookiePath); //Path authorized

        string hash = FormsAuthentication.Encrypt(ticket);
        HttpCookie cookie = new HttpCookie(
        FormsAuthentication.FormsCookieName, hash);


        if (ticket.IsPersistent) cookie.Expires = ticket.Expiration;


        Response.Cookies.Add(cookie);

        string returnUrl = Request.QueryString["ReturnUrl"];
        if (returnUrl == null) returnUrl = "~/Users/User_Profile.aspx";

        Response.Redirect(returnUrl);

        base.OnLoad(e);
    }
    else
    {
        Alert.Text = "<div class=\"alert alert-error\"><button type=\"button\" class=\"close\" data-dismiss=\"alert\">&times;</button><strong>Warning!</strong> Best check yo self, you're not looking too good.<div>";
        LogUsernameText.Text = "Fail";
    }
}
}

我的猜测是有一些脚本重定向了我的按钮事件。我找不到它。我正在使用最新版本的引导主题。


我找到了我的问题的答案,关于属性,您可以选择UseSubmitBehaviour并将其设置为 false,我的猜测是它会像普通的 HTML 提交按钮一样被检测到,并且 bootstrap 准备更改常规的 HTML 组件行为。 (我真的不知道如何用更好的语言表达它。请随意编辑。)

我的意思是... Bootstrap 并未计划 100% 与 asp.net 组件一起工作,因此它将依赖于 javascript 命令。

它具有逻辑性,因为当它是表单时,它会抓取所有文本字段,并且当按钮被激活时,它会为您提交它们。创建我上面提到的重定向,希望这对某人有帮助,因为我的大脑变慢了,耽误了我 2 天的工作。

<asp:Button ID="loginBtn" runat="server" CssClass="btn" Text="Sign In!" Width="220px" OnClick="loginBtn_Click" UseSubmitBehavior="False" />

编辑和正确的解决方案:

实际上,我开始更多地探索它是如何工作的,这是一个验证问题,只有在验证得到满足的情况下才会提交,无论您是否拥有验证,因此如果您使用 VS 并进行更改,则必须转到proprietiesValidation Required价值Disabled,不用担心按钮只会在其表单内验证。

对于那些没有...属性栏的人,请将这些添加到您的按钮 html 代码中:

ValidateRequestMode="Disabled" 

我决定用更可靠的信息来改进这个答案,因为我注意到,在搜​​索这个问题解决方案时,我只能找到我的问题,而在任何其他来源上都找不到好的答案,但几个月前我找到了“正确的”解决方案...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Asp.net Button 组件在 Twitter-Bootstrap 主题下不起作用 的相关文章

随机推荐