Hirdetés

Új hozzászólás Aktív témák

  • joysefke

    veterán

    Sziasztok!

    ASP.NET Core 2.1 MVC

    Layout+View+ViewComponent témakörben kéne egy kis help. Sehogy nem tudom szépen megoldani amit szeretnék.

    Tehát a user számára renderelt View tartalmaz egyrészt képeket, style-t (háttér-kép, általános szövegek, kedvcsinálók stb) illetve tartalmaz ezen felül a user-hez kapcsolódó adatokat is, amelyek egy form-ban kerülnek megjelenítésre (HttpGet), illetve onnan lesznek updatelve (HttpPost).

    A kétféle adatot szeretném elválasztani, úgy, hogy:
    -A parent View-nak (parent View == Index.cshtml) átadott ViewModel objektum kizárólag a user-hez kapcsolódó adatokat tartalmazza, ami a form-hoz hozzá is lesz kötve.
    -A formázás, háttérkép, csicsa-micsát pedig egy az Index.cshtml-ből hívott ViewComponent (PageContentViewComponent.cs) által renderelt partial View tartalmazza (Default.cshtml). A ViewComponent ezeket az adatokat DI-al nyeri ki a content-repository-ból.

    Ami nem megy:
    A Layout-ban hivatkozom néhány RenderSection-re, pld @RenderSection("Title"). Ezt a sectiont nem a View-ban, hanem a View által hívott ViewComponentben szeretném legenerálni.

    Tehát Layout-ban ez van:
    ......
    @RenderSection("Title")
    .....
    .....
    @RenderBody() <---- Ez szépen működik

    Az Index.cshtml-ben ez van:
    ........
    @await Component.InvokeAsync("PageContent")

    A PageContentViewComponent-hez tartozó Default.cshtml-ben az alábbiak vannak. A kérdéses section legalul van.

    @model UIModel

    <div class="div">

    ......
    @await Html.PartialAsync("NavbarPartial", Model)

    @await Html.PartialAsync("CouplePartial", Model.Couple)

    @await Html.PartialAsync("EventsPartial", Model.Events)

    @await Html.PartialAsync("PeoplePartial", Model.People)

    @await Html.PartialAsync("GalleryPartial", Model.Gallery)
    ....
    </div>

    @section Title{
    <title>@Model.General.Title</title>
    }

    Erre ezt kapom:
    InvalidOperationException: The layout page '/Views/Shared/_PrettyLayout.cshtml' cannot find the section 'Title' in the content page '/Views/Ui/Index.cshtml'.

Új hozzászólás Aktív témák