ASP.Net 添加 padding/positioning 时核心模型绑定表单被压扁

ASP.Net Core model bound form squished when padding/positioning is added

我在尝试格式化页面、添加 header 并将其余内容向下移动 10% 的屏幕时遇到问题,这样标题就不会隐藏在下面我放入的 header。此 CSS 适用于其他页面,只需将内容向下移动 10%(我也尝试使用填充):

.content{
    position: absolute;
    top: 10%;
}

然而,当我将它放入这个特定的表单时,它会挤压我所有的表单元素 Picture of Squished form elements。我不太确定是什么原因造成的,因为我只是想在表格上方添加 space。

这是该 .cshtml 页面上的表单代码(此表单是 Visual Studios 2019 的 90% pre-generated 代码,在 <div class="content"> 标记之前工作):

<div class="content">
            <div class="row">
                <div class="col-md-4">
                    <form asp-action="Edit">
                        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
                        <input type="hidden" asp-for="@Model.id" class="form-control" />

                        <div class="form-group">
                            <label asp-for="FirstName" class="control-label"></label>
                            <input asp-for="FirstName" class="form-control" value="@Model.FirstName" />
                            <span asp-validation-for="FirstName" class="text-danger"></span>
                        </div>
                        <div class="form-group">
                            <label asp-for="LastName" class="control-label"></label>
                            <input asp-for="LastName" class="form-control" value="@Model.LastName" />
                            <span asp-validation-for="LastName" class="text-danger"></span>
                        </div>
                        <div class="form-group">
                            <label asp-for="Username" class="control-label"></label>
                            <input asp-for="Username" class="form-control" value="@Model.Username" />
                            <span asp-validation-for="Username" class="text-danger"></span>
                        </div>
                        <div class="form-group">
                            <label asp-for="Password" class="control-label"></label>
                            <input asp-for="Password" class="form-control" value="@Model.Password" />
                            <span asp-validation-for="Password" class="text-danger"></span>
                        </div>
                        <div class="form-group">
                            <label asp-for="StreetAddress" class="control-label"></label>
                            <input asp-for="StreetAddress" class="form-control" value="@Model.StreetAddress" />
                            <span asp-validation-for="StreetAddress" class="text-danger"></span>
                        </div>
                        <div class="form-group">
                            <label asp-for="City" class="control-label"></label>
                            <input asp-for="City" class="form-control" value="@Model.City" />
                            <span asp-validation-for="City" class="text-danger"></span>
                        </div>
                        <div class="form-group">
                            <label asp-for="State" class="control-label"></label>
                            <input asp-for="State" class="form-control" value="@Model.State" />
                            <span asp-validation-for="State" class="text-danger"></span>
                        </div>
                        <div class="form-group">
                            <label asp-for="ZipCode" class="control-label"></label>
                            <input asp-for="ZipCode" class="form-control" value="@Model.ZipCode" />
                            <span asp-validation-for="ZipCode" class="text-danger"></span>
                        </div>
                        <div class="form-group">
                            <label asp-for="ApprovalStatus" class="control-label"></label>
                            <input asp-for="ApprovalStatus" class="form-control" value="@Model.ApprovalStatus" />
                            <span asp-validation-for="ApprovalStatus" class="text-danger"></span>
                        </div>
                        <div class="form-group">
                            <input type="submit" value="Save" class="btn btn-primary" />
                            <input type="reset" value="Cancel" class="btn btn-primary" asp-action="ManageVolunteers" />
                        </div>
                    </form>
                </div>
            </div>

            <div>
                <a asp-action="Landing">Back to List</a>
            </div>
        </div>

仅供参考:此页面上剩余的 html(表格正上方)。

        <div class="header">
            <img src="~/Images/BitworksLogo.png" id="header-img" />
            <h2>Volunteer Management System</h2>
        </div>

        <h1>Edit</h1>

        <hr />

编辑:我现在已经在相同性质的多种形式上进行了尝试(ASP.Net-core .cshtml model-bound 形式)同样的模式也发生在那些字段和标签上,就它们被压扁而言。这是可能的,但在 model-bound 形式之间吗?有没有另一种方法可以显示相同的输出?

它可能会收缩,因为内容 class 具有绝对定位,但没有全宽的父元素。您可以简单地将 属性 width: 100%; 添加到 .content class 然后它看起来更正常。

但是在这种情况下,您可以(并且可能应该)避免一起使用绝对位置。

更好的方法是将页眉设置为固定高度并从内容中删除位置 属性。

.header {
  height: 100px;
}
.content {
 // removed all properties. 
}

现在这会导致页眉和内容相对定位,因此它们将相互堆叠。