Как остановить частичное от наследования модели? - PullRequest
0 голосов
/ 26 октября 2019

Я впервые делаю веб-сайт MVC, пока что все хорошо, все гладко, но у меня есть одна большая проблема.

Я использую Layout with Partials для Header, Navigation, Footer. Это мой макет.

<div class="page-wrapper">
    <header class="header">
        <partial name="Partials/_HeaderTopPartial"/>
        <div class="header-middle sticky-header">
            <div class="container">
                <div class="header-left">
                    <ul class="menu sf-arrows">
                        <li class="active">
                            <a asp-area="" asp-controller="Home" asp-action="Index">Home</a>
                        </li>
                        <partial name="Partials/NavigationPartials/_NavigationHeaderLeftCategoryPartial"/>
                        <partial name="Partials/NavigationPartials/_NavigationHeaderLeftProductsPartial"/>
                        <partial name="Partials/NavigationPartials/_NavigationHeaderLeftPagesPartial"/>
                    </ul>
                </div>
                <partial name="Partials/NavigationPartials/_NavigationHeaderCenterPartial"/>
                <div class="header-right">
                    <partial name="Partials/NavigationPartials/_NavigationHeaderRightPartial"/>
                </div><!-- End .header-right -->
            </div><!-- End .container -->
        </div><!-- End .header-middle -->
    </header><!-- End .header -->

Я передаю модель HomeViewModel по _NavigationHeaderLeftCategoryPartial

@model HomeViewModel
<li>
    <a href="category.html" class="sf-with-ul">Categories</a>
    <div class="megamenu megamenu-fixed-width">
        <div class="row">
            <div class="col-lg-8">
                <div class="row">
                    <div class="col-lg-6">
                        <div class="menu-title">
                            <a href="#">Variations 1<span class="tip tip-new">New!</span></a>
                        </div>
                        <ul>
                            <li>
                                <a href="category-banner-full-width.html">Fullwidth Banner<span class="tip tip-hot">Hot!</span></a>
                            </li>
                            <li>
                                <a href="category-banner-boxed-slider.html">Boxed Slider Banner</a>
                            </li>
                            <li>
                                <a href="category-banner-boxed-image.html">Boxed Image Banner</a>
                            </li>
                            <li>
                                <a href="category-sidebar-left.html">Left Sidebar</a>
                            </li>
                            <li>
                                <a href="category-sidebar-right.html">Right Sidebar</a>
                            </li>
                            <li>
                                <a href="category-flex-grid.html">Product Flex Grid</a>
                            </li>
                            <li>
                                <a href="category-horizontal-filter1.html">Horizontal Filter1</a>
                            </li>
                            <li>
                                <a href="category-horizontal-filter2.html">Horizontal Filter2</a>
                            </li>
                        </ul>
                    </div><!-- End .col-lg-6 -->
                </div><!-- End .row -->
            </div><!-- End .col-lg-8 -->
            <div class="col-lg-4">
                <div class="banner">
                    <a href="#">
                        <img src="~/images/menu-banner-2.jpg" alt="Menu banner">
                    </a>
                </div><!-- End .banner -->
            </div><!-- End .col-lg-4 -->
        </div>
    </div><!-- End .megamenu -->
</li>

Все работает нормально, пока я не нажму на страницу входа, которая частично находится вдругой частичный => _NavigationHeaderLeftPagesPartial

<li>
    <a href="#" class="sf-with-ul">Pages</a>
    <ul>
        <li>
            <a href="cart.html">Shopping Cart</a>
        </li>
        <li>
            <a href="#">Checkout</a>
            <ul>
                <li>
                    <a href="checkout-shipping.html">Checkout Shipping</a>
                </li>
                <li>
                    <a href="checkout-shipping-2.html">Checkout Shipping 2</a>
                </li>
                <li>
                    <a href="checkout-review.html">Checkout Review</a>
                </li>
            </ul>
        </li>
        <li>
            <a href="#">Dashboard</a>
            <ul>
                <li>
                    <a href="dashboard.html">Dashboard</a>
                </li>
                <li>
                    <a href="my-account.html">My Account</a>
                </li>
            </ul>
        </li>
        <li>
            <a asp-area="" asp-controller="Home" asp-action="About">About Us</a>
        </li>
        <li>
            <a href="#">Blog</a>
            <ul>
                <li>
                    <a href="blog.html">Blog</a>
                </li>
                <li>
                    <a href="single.html">Blog Post</a>
                </li>
            </ul>
        </li>
        <li>
            <a asp-area="" asp-controller="Home" asp-action="Contact">Contact Us</a>
        </li>
        <li>
            <partial name="_LoginPartial"/>
        </li>
        <li>
            <a a asp-area="Identity" asp-page="/Account/ForgotPassword">Forgot Password</a>
        </li>
    </ul>
</li>

И, наконец, частичный логин

@using FashionNova.Common
@using FashionNova.Data.Models
@using Microsoft.AspNetCore.Identity
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager


@if (this.SignInManager.IsSignedIn(this.User))
    {
        <a asp-area="Identity" asp-page="/Account/Logout">Logout</a>
    }
    else
    {
        <a asp-area="Identity" asp-page="/Account/Login">Login</a>
    }

Я получаю ошибку

InvalidOperationException: элемент модели передан вViewDataDictionary имеет тип 'Fashion.Web.Areas.Identity.Pages.Account.LoginModel', но для этого экземпляра ViewDataDictionary требуется элемент модели типа 'Fashion.Web.ViewModels.HomeViewModel'.

Пожалуйста, кто-нибудь, помогите мне понять, как настроить разные модели для каждого отдельного партиала, не мешая друг другу.

1 Ответ

0 голосов
/ 26 октября 2019

Пожалуйста, убедитесь, что вы передаете модели в ваши представления. Здесь вы можете найти больше примеров этого: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/built-in/partial-tag-helper?view=aspnetcore-3.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...