Функция LogOff в NavBar не работает в MVC5 - PullRequest
0 голосов
/ 15 мая 2018

Был создан проект в MVC 5, и я внедряю шаблон Bootwatch , но что-то не работает в моем меню NavBar.

1.- Нет данных о возможностях "LogOff", все права и возможности _LoginPartial este no se ejecuta y mi boton simplemente no hace nada.

Мой _LoginPartial.cshtml:

@using Microsoft.AspNet.Identity
@if (Request.IsAuthenticated)
{
    using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
    {
    @Html.AntiForgeryToken()

    <ul class="nav navbar-nav navbar-right">
         <li>
            @Html.ActionLink("Hola: " + User.Identity.GetUserName() + "! ", "Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })
        </li>
        <li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>
    </ul>
    }
}
else
{
    <ul class="nav navbar-nav navbar-right">
        <li>@Html.ActionLink("Log in", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
    </ul>
}

Мой _Layout.cshtml:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - Muebles Pangal</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")     

     <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>   

</head>
<body>
    <div class="container">
        <nav class="navbar navbar-expand-lg navbar-dark bg-success">
            <a class="navbar-brand" href="#">Muebles Pangal</a>
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarColor01" aria-controls="navbarColor01" aria-expanded="false" aria-label="Toggle navigation" style="">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarColor01">
                <ul class="navbar-nav mr-auto">
                    <li class="nav-item active">
                        <a class="nav-link" href="@Url.Action("Index", "Home")">Home <span class="sr-only">(current)</span></a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="@Url.Action("Index", "Categorias")">Categorias </a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="@Url.Action("Index", "Productoes")">Productos </a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="@Url.Action("Index", "Ubicacions")">Proveedores </a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="@Url.Action("Index", "Usuarios")">Usuarios </a>
                    </li>
                </ul>
                <form class="form-inline my-2 my-lg-0">
                    @Html.Partial("_LoginPartial")    

                </form>

            </div>
        </nav>
        <br />
        </div>

        <div class="container body-content">
            @RenderBody()
            <hr />
            <footer>
                <p>&copy; @DateTime.Now.Year - Sistema Bodega</p>
            </footer>
        </div>

    <script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.2.0.min.js"></script>


        @Scripts.Render("~/bundles/jquery")
        @Scripts.Render("~/bundles/bootstrap")
        @RenderSection("scripts", required: false)
</body>
</html>

My AccountController.cs:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
    AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
    return RedirectToAction("Index", "Home");
}

2.- Цвет моего NavBar с правой стороны не равен элементам с левой стороны, и когда я осматриваю консоль, я выбрасываю элемент на a{}, который меняет свой цвет, вносит изменения в другие такие элементы, как, например, @Html.ActionLink, а не в элементе, который вы хотите изменить.

Это действительно элемент моего NavBar, который вы хотите изменить цвет?

Console

я второй раз работаю с MVC 5 и впервые внедряю шаблон, кто-нибудь знает, что происходит? любая помощь для меня?

1 Ответ

0 голосов
/ 15 мая 2018

ASP.NET не может отобразить вложенную форму.Отображается только родительская форма, поэтому для сохранения формы в Частичной странице

замените

<form class="form-inline my-2 my-lg-0">
@Html.Partial("My_LoginPartial")
</form>

на

@using Microsoft.AspNet.Identity

    @if (Request.IsAuthenticated)
        {


            using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right form-inline my-2 my-lg-0" }))
            {
            @Html.AntiForgeryToken()

            <ul class="nav navbar-nav navbar-right">
                 <li>
                    @Html.ActionLink("Hola: " + User.Identity.GetUserName() + "! ", "Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })
                </li>
                <li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>
            </ul>
            }
        }
        else
        {
        <form class ="form-inline my-2 my-lg-0"
            <ul class="nav navbar-nav navbar-right">
                <li>@Html.ActionLink("Log in", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
            </ul>
        </form>
        }
...