Как я могу помешать пакету Bootstrap Nuget повлиять на высоту блока HTML - PullRequest
0 голосов
/ 31 марта 2020

Я работаю над финальным проектом для моего ASP. NET MVC класса. Подводя итог, можно сказать, что это система управления отелем, которая позволяет пользователям бронировать гостиничный номер.

Я использую пакет bootstrap Nuget для обеспечения стиля CSS, но после устранения неполадок я обнаружил его вызывает проблемы с определением размера блочной модели.

Я работаю в панели администрирования, где системный администратор может войти в систему для выполнения задач администрирования; такие как просмотр бронирования, просмотр пользовательских данных и т. д. c. Когда я просматриваю страницу, ширина соответствует размеру экрана, но высота очень мала, кажется, что она отображается в 1366x215,5, хотя я ожидаю, что она заполнит экран. Стоит отметить, что я использую контроллер Entity Framework (с предварительно сгенерированными представлениями), поэтому вместо перенаправления со страницы администратора на контроллер EF я использую IFrame для отображения представлений EF с контроллера администратора.

Когда я удаляю ссылку на bootstrap .min. css из родительского представления, оставляя ссылку bootstrap в представлении, отображаемом IFrame, все работает хорошо. Так что я думаю, это связано с проблемой, когда родитель использует файл bootstrap .min. css. Я попытался изменить его, где я удаляю ссылку из представления IFrame и сохраняю ее в родительском представлении, но это все равно происходит.

Кажется, что это 100%, вызванное ссылкой bootstrap в родительский вид, но я использую его по всему приложению и больше нигде не вижу проблем.

Вот фотография того, что отображается:

Here is a photo of what is being displayed

I использовать мастер-макет для страниц моего администратора:

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <link href="~/Content/bootstrap.min.css" rel="stylesheet" />
    <title>ReserveIt | @ViewBag.Title</title>
</head>
<body>
    <nav class="navbar navbar-expand-lg navbar-light bg-light">
        <a class="navbar-brand">ReserveIt</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>

        <div class="collapse navbar-collapse" id="navbarSupportedContent">
            <ul class="navbar-nav mr-auto">
                <li class="nav-item active">
                    @Html.ActionLink("Users", "Main", "Admin", null, new { @class = "nav-link" })
                </li>
                @if (Session["email"] != null)
                {
                    <li class="nav-item">
                        @Html.ActionLink("My Account", "Details", "Accounts", new { id = Session["userID"] }, new { @class = "nav-link" })
                    </li>
                }
                <li class="nav-item">
                    <a class="nav-link" href="reservations.php">Reservations</a>
                </li>
            </ul>
            <div class="form-inline my-2 my-lg-0">
                @if (Session["email"] == null)
                {
                    @Html.ActionLink("Login", "Index", "Login", null, new { @class = "btn btn-outline-success my-2 my-sm-0" });
                }
                else
                {
                    @Html.ActionLink("Logout", "Logout", "Login", null, new { @class = "btn btn-outline-success my-2 my-sm-0" });
                }
            </div>
        </div>
    </nav>

    @RenderBody()
</body>
</html>

В настоящее время у меня есть только ссылка на макет и теги IFrame в родительском представлении

@{
    ViewBag.Title = "Main";
    Layout = "~/Views/Shared/_AdminMasterLayout.cshtml";
}

<iframe src="@Url.Action("Index", "Accounts")"></iframe>

И представление контроллера EF (представление в окне IFrame) выглядит следующим образом:

@model IEnumerable<ReserveIt.Models.User>

@{
    ViewBag.Title = "Index";
}

<link href="~/Content/bootstrap.min.css" rel="stylesheet" />
<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Email)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Firstname)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Middlename)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Lastname)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Phone)
        </th>
    </tr>

    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Email)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Firstname)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Middlename)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Lastname)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Phone)
            </td>
            <td style="white-space: nowrap">
                @Html.ActionLink("Edit", "Edit", new { id = item.UserID }) |
                @Html.ActionLink("Details", "Details", new { id = item.UserID }) |
                @Html.ActionLink("Delete", "Delete", new { id = item.UserID })
            </td>
        </tr>
    }
</table>

Я относительно новичок в ASP. NET, поэтому я, скорее всего, что-то упустил и рад учиться.

1 Ответ

0 голосов
/ 31 марта 2020

Существует несколько способов решения этой проблемы.

Во-первых, всегда рекомендуется в BootStrap обернуть iframe в тег, реагирующий на встраивание, и установить соотношение сторон. Например:

См .: https://getbootstrap.com/docs/4.4/utilities/embed/

Хотя больше для ваших целей и способа настройки, было бы более целесообразно просто установить высоту iframe с помощью стиля CSS, скажем, 80vh (или 80% высоты экрана по вертикали).

К сожалению, некоторые мысли и соображения по поводу дизайна при использовании фреймов, которые вы сделаете, sh, будут приняты во внимание. Основная проблема с iframe заключается в том, что вы не можете точно представить, как содержимое во фрейме будет отображаться на каждом устройстве для учета площади экрана, размера шрифта, интервала и т. Д. c. у этого пользователя будет или сколько контента в конечном итоге понадобится для отображения iframe, и в конечном итоге использование iframe приведет к дополнительному интервалу для учета этих различий, а также может привести к тому, что тема вашего дизайна станет беспорядочной. Или будет слишком маленьким для содержимого и, следовательно, может потребоваться полосы прокрутки, что может привести к проблемам с удобством использования.

...