ASP.NET 网络表单字段未正确对齐

Posted

技术标签:

【中文标题】ASP.NET 网络表单字段未正确对齐【英文标题】:ASP.NET webforms fields not aligning properly 【发布时间】:2019-12-28 03:05:21 【问题描述】:

我有以下注册表单,我使用 VS 2017 使用 Bootstrap 3.4.1 在 ASP.NET 网络表单中构建。

前段时间我在 Bootstrap 2 上使用过相同的代码,效果很好:

下拉菜单和按钮比文本框宽一点。我该如何解决这个问题。

Register.aspx 的代码

<div class="col-sm-5 col-xs-5">
            <div class="col-xs-12">
                <h4>Create a new account</h4>
                <hr />

                <div class="input-group">
                    <span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span></span>
                    <asp:DropDownList runat="server" ID="UserName" CssClass="form-control" TextMode="UserName" placeholder="UserName" />
                </div>
                <asp:RequiredFieldValidator runat="server" ControlToValidate="UserName" Display="Dynamic"
                    CssClass="text-danger" ErrorMessage="The UserName field is required." />

                <div class="input-group">
                    <span class="input-group-addon"><span class="glyphicon glyphicon-star-empty"></span></span>
                    <asp:TextBox runat="server" ID="Password" TextMode="Password" CssClass="form-control" placeholder="Password" />
                </div>
                <asp:RequiredFieldValidator runat="server" ControlToValidate="Password" Display="Dynamic"
                    CssClass="text-danger" ErrorMessage="The password field is required." />

                <div class="input-group">
                    <span class="input-group-addon"><span class="glyphicon glyphicon-star"></span></span>
                    <asp:TextBox runat="server" ID="ConfirmPassword" TextMode="Password" CssClass="form-control" placeholder="Confirm Password" />
                </div>
                <asp:RequiredFieldValidator runat="server" ControlToValidate="ConfirmPassword"
                    CssClass="text-danger" Display="Dynamic" ErrorMessage="The confirm password field is required." />
                <asp:CompareValidator runat="server" ControlToCompare="Password" ControlToValidate="ConfirmPassword"
                    CssClass="text-danger" Display="Dynamic" ErrorMessage="The password and confirmation password do not match." />

                <div class="input-group">
                    <span class="input-group-addon"><span class="glyphicon glyphicon-phone-alt"></span></span>
                    <asp:TextBox runat="server" ID="PhoneNumber" TextMode="SingleLine " CssClass="form-control" placeholder="Phone Number" />
                </div>
                <asp:RequiredFieldValidator runat="server" ControlToValidate="PhoneNumber" Display="Dynamic"
                    CssClass="text-danger" ErrorMessage="The phone number field is required." />

                <div class="form-group">
                    <asp:Button runat="server" OnClick="CreateUser_Click" Text="Register" CssClass="btn btn-block btn-default" />
                </div>

                <div class="form-group">
                    <p>
                        By clicking on "Register", you agree to the <a data-toggle="modal" href="#termsOfUseModal">Terms of Use</a> and the 
                        <a data-toggle="modal" href="#privacyModal">Privacy Policy</a>.
                    </p>
                </div>

                <asp:PlaceHolder runat="server" ID="DisplayEmail" Visible="false">
                    <p class="text-info">
                        Please check your email and confirm your email address.
                    </p>
                </asp:PlaceHolder>
            </div>
        </div>

【问题讨论】:

我将您的标记放在使用 3.3.7 的页面上,没有问题。有一个人们可以查看的工作示例是一个好主意(?)。如果允许的话,在某个地方的测试页。 看起来所有的 glyphicon spans 都关闭了两次。 与 3.3.7 相同的问题。如果没有 2 个跨度,事情就会出错。就像我说的,它在几年前与旧版本的 Bootstrap 一起工作。 docs for Bootstrap 3 input group 表示 “通过在任何基于文本的&lt;input&gt; 之前、之后或两侧添加文本或按钮来扩展表单控件”。然后它继续说“避免对输入组使用&lt;select&gt;”元素。看起来 Bootstrap 3 不支持 .input-group 中的 &lt;select&gt;,这是您遇到奇怪样式的方式 zgood,我应该如何重新设计上面的样式? 【参考方案1】:

最后通过在 Site.css 中添加此代码来修复它。

/* Move down content because we have a fixed navbar that is 50px tall */
body 
    padding-top: 50px;
    padding-bottom: 20px;


/* Wrapping element */
/* Set some basic padding to keep content from hitting the edges */
.body-content 
    padding-left: 15px;
    padding-right: 15px;


/* Responsive: Portrait tablets and up */
@media screen and (min-width: 768px) 
    .jumbotron 
        margin-top: 20px;
    

    .body-content 
        padding: 0;
    


/* make sidebar nav vertical */
@media (min-width: 768px) 
    .sidebar-nav 
        margin-top: 20px;
    

        .sidebar-nav .navbar .navbar-collapse 
            padding: 0;
            max-height: none;
        

        .sidebar-nav .navbar ul 
            float: none;
        

            .sidebar-nav .navbar ul:not(.dropdown-menu) 
                display: block;
            

        .sidebar-nav .navbar li 
            float: none;
            display: block;
        

            .sidebar-nav .navbar li a 
                padding-top: 12px;
                padding-bottom: 12px;
            

【讨论】:

以上是关于ASP.NET 网络表单字段未正确对齐的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Web API 身份验证(Web + 移动)

在 Asp.Net Core 中使用 Swagger 在请求中未发送授权承载令牌

如何在 ASP.NET 中垂直对齐对象?

跟我学ASP.NET MVC之十一:URL路由

win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:WindowsMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NE

ASP.NE网站发布注意事项