aparrygordontafe Ответов: 2

Бутстрап 4 ASP.NET выравнивание флажков и удобство использования


Всем Привет,

Я вырываю волосы, пытаясь выровнять пользовательский флажок Bootstrap 4 в моей группе форм.
Кроме того, флажок не работает, если вы нажмете на флажок или метку, но делает это, если вы нажмете примерно на 1 см слева от флажка.

Изображение отображающее форму можно посмотреть здесь [https://postimg.cc/34CBTp9p]



У меня есть следующий код (с комментарием "проблема со следующим", выделяющим флажок.)

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="checktest.aspx.vb" Inherits="CustomerCareSystemWeb.checktest" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
	<title>Check Box Test</title>
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" />
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
</head>
<body>
	<form id="form1" runat="server">
		<br />
		<div class="card">
			<div class="card-body">
				<h4 class="card-title">Student Search/Create</h4>
				<hr />
				<div class="form-group row">

					<asp:Label ID="lblStudentId" CssClass="col-2 col-form-label" AssociatedControlID="txtStudentId" runat="server" Text="Student Id:"></asp:Label>
					<div class="col-4">
						<asp:TextBox ID="txtStudentId" CssClass="form-control" runat="server"></asp:TextBox>
					</div>

					<asp:Label ID="lblStudentEmail" CssClass="col-2 col-form-label" AssociatedControlID="txtStudentEmail" runat="server" Text="Student Email:"></asp:Label>
					<div class="col-4">
						<asp:TextBox ID="txtStudentEmail" CssClass="form-control" runat="server"></asp:TextBox>
					</div>

				</div>

				<div class="form-group row">

					<asp:Label ID="lblFirstName" CssClass="col-2 col-form-label" AssociatedControlID="txtStudentFirstName" runat="server" Text="Student First Name:"></asp:Label>
					<div class="col-4">
						<asp:TextBox ID="txtStudentFirstName" CssClass="form-control" runat="server"></asp:TextBox>
					</div>

					<asp:Label ID="lblStudentSurname" CssClass="col-2 col-form-label" AssociatedControlID="txtStudentSurname" runat="server" Text="Student Surname:"></asp:Label>
					<div class="col-4">
						<asp:TextBox ID="txtStudentSurname" CssClass="form-control" runat="server"></asp:TextBox>
					</div>

				</div>

				<div class="form-group row">

					<asp:Label ID="lblStudentMobile" CssClass="col-2 col-form-label" AssociatedControlID="txtStudentMobile" runat="server" Text="Student Mobile Phone:"></asp:Label>
					<div class="col-4">
						<asp:TextBox ID="txtStudentMobile" CssClass="form-control" runat="server"></asp:TextBox>
					</div>

					<asp:Label ID="lblStudentHomePhone" CssClass="col-2 col-form-label" AssociatedControlID="txtStudentHomePhone" runat="server" Text="Student Home Phone:"></asp:Label>
					<div class="col-4">
						<asp:TextBox ID="txtStudentHomePhone" CssClass="form-control" runat="server"></asp:TextBox>
					</div>

				</div>

				<div class="form-group row">

					<asp:Label ID="lblHowDidYouHear" CssClass="col-2 col-form-label" AssociatedControlID="ddlHowDidYouHear" runat="server" Text="How Did You Hear:"></asp:Label>
					<div class="col-4">
						<asp:DropDownList ID="ddlHowDidYouHear" runat="server" CssClass="custom-select"></asp:DropDownList>
					</div>
					<%--ISSUE WITH THE FOLLOWING--%>
					<asp:Label ID="lblNoDetails" CssClass="col-2 col-form-label" AssociatedControlID="customCheck" runat="server" Text="Personal Information:"></asp:Label>
					<div class="custom-control custom-checkbox">
						<input type="checkbox" class="custom-control-input" id="customCheck" name="customCheck" runat="server" />
						<label class="custom-control-label" for="customCheck">Not Provided</label>
					</div>

				</div>

				<div class="form-group row">

					<div class="col-8"></div>
					<div class="col-2">
						<asp:Button ID="btnSearchStudent" CssClass="btn btn-primary btn-block" runat="server" Text="Search Student" />
					</div>

				</div>

			</div>
		</div>
	</form>
</body>
</html>


Любая помощь будет очень признательна.

Что я уже пробовал:

Помимо нескольких google искал различные связанные термины. Я также пробовал добавлять отступы и пытаться отлаживать css в Chrome.

2 Ответов

Рейтинг:
2

Richard Deeming

Есть две проблемы с вашей разметкой:

1) Вам нужен <div class="col-4"> элемент вокруг вашего пользовательского флажка.

2) Вам нужен <div class="form-control-plaintext"> внутри этого, а также вокруг вашего пользовательского флажка, чтобы он выровнялся по вертикали.

<div class="col-4">
    <div class="form-control-plaintext">
        <div class="custom-control custom-checkbox">
            <input type="checkbox" class="custom-control-input" id="customCheck" name="customCheck" runat="server" />
            <label class="custom-control-label" for="customCheck">Not Provided</label>
        </div>
    </div>
</div>
Демонстрация[^]


Рейтинг:
2

Honda Chen

Есть 2 решения тест ок с Bootstrap version 4.3.1:
1. Добавить атрибут runat="сервер" clientidmode="статический", чтобы оригинальный загрузочный код.
2. Используйте Запрос.Форма["rdoName2"].


<div class="row">
    <div class="col">
        Checkbox and radio samples by BootStrap.
    </div>
</div>

<div class="custom-control custom-checkbox">
    <input type="checkbox" class="custom-control-input" id="same-address">
    <label class="custom-control-label" for="same-address">Shipping address is the same as my billing address</label>
</div>
<div class="custom-control custom-checkbox">
    <input type="checkbox" class="custom-control-input" id="save-info">
    <label class="custom-control-label" for="save-info">Save this information for next time</label>
</div>

<div class="d-block my-3">
    <div class="custom-control custom-radio">
        <input id="credit" name="paymentMethod" type="radio" class="custom-control-input" required>
        <label class="custom-control-label" for="credit">Credit card</label>
    </div>
    <div class="custom-control custom-radio">
        <input id="debit" name="paymentMethod" type="radio" class="custom-control-input" required>
        <label class="custom-control-label" for="debit">Debit card</label>
    </div>
    <div class="custom-control custom-radio">
        <input id="paypal" name="paymentMethod" type="radio" class="custom-control-input" required>
        <label class="custom-control-label" for="paypal">Paypal</label>
    </div>
</div>

<div class="row">
    <div class="col">
        aspx server control 的 Checkbox 與 radio-button 要正確套用到 BootStrap 成功很麻煩.
        <br />
        解決方法: 直接將 Bootstrap 的 html語法加入 runat="server" 及其他屬性, 將 html control 轉為 server control 最快!.
        <br />
        以下範例將以上的 Bootstrap html control 加入 runat="server" 轉為 server control.
        <br />
    </div>
</div>


<div class="custom-control custom-checkbox">
    <input type="checkbox" class="custom-control-input" id="chk1" runat="server" clientidmode="Static">
    <label class="custom-control-label" for="chk1">CheckBox1</label>
</div>
<div class="custom-control custom-checkbox">
    <input type="checkbox" class="custom-control-input" id="chk2" runat="server" clientidmode="Static">
    <label class="custom-control-label" for="chk2">CheckBox2</label>
</div>

<div class="d-block my-3">
    <div class="custom-control custom-radio">
        <input id="rdo1" name="rdoName" type="radio" value="1" class="custom-control-input" required runat="server" clientidmode="Static">
        <label class="custom-control-label" for="rdo1">Credit card</label>
    </div>
    <div class="custom-control custom-radio">
        <input id="rdo2" name="rdoName" type="radio" value="2" class="custom-control-input" required runat="server" clientidmode="Static">
        <label class="custom-control-label" for="rdo2">Debit card</label>
    </div>
    <div class="custom-control custom-radio">
        <input id="rdo3" name="rdoName" type="radio" value="3" class="custom-control-input" required runat="server" clientidmode="Static">
        <label class="custom-control-label" for="rdo3">Paypal</label>
    </div>
</div>

<div class="row">
    <div class="col">
        For easy used with Request.Form["rdoName2"] on server side,  forget about server control, use html control only:
    </div>
</div>

<div class="d-block my-3">
    <div class="custom-control custom-radio">
        <input id="rdo21" name="rdoName2" type="radio" value="1" class="custom-control-input" required >
        <label class="custom-control-label" for="rdo21">Credit card</label>
    </div>
    <div class="custom-control custom-radio">
        <input id="rdo22" name="rdoName2" type="radio" value="2" class="custom-control-input" required >
        <label class="custom-control-label" for="rdo22">Debit card</label>
    </div>
    <div class="custom-control custom-radio">
        <input id="rdo23" name="rdoName2" type="radio" value="3" class="custom-control-input" required >
        <label class="custom-control-label" for="rdo23">Paypal</label>
    </div>
</div>