Umieszczenie całej treści strony (z wyjątkiem diva center) w jednym layoucie

0

Hej, uczę się asp.net mvc i mam taki problem, strona ma mieć taki sam wzór dla wszystkich podstron, tzn. np mamy odnośniki do takich stron jak: o firmie, lista produktów, pomoc itp, chcę by zmieniała się zawartość tylko w jednym miejscu na stronie. Stronke podzieliłem div-ami na osobne bloki takie jak top, center składający się z left i right oraz bottom, w divie left jest lista odnośników a w center treść dla danego odnośnika. I teraz moje pytanie jest takie czy powinienem dla każdego odnośnika pisać cały schemat strony, tzn powielać listę div-ów i zmieniać po prostu wszędzie zawartość center czy jakoś inaczej? Chciałbym zrobić tak żeby cała treść z wyjątkiem div-u center znajdowała się w jednym layoucie z którego dziedziczy każdy odnośnik, a div center byłby uzupełniany w poszczególnych podstronach. Czy to możliwe? Jak to zrobić? Z góry dziękuję.

0

Takie coś, to oczywista oczywistość.
Umieść swój wzorcowy kod html w pliku Views\Shared\_Layout.cshtml, użyj @RenderBody() tam, gdzie mają być sekcje zmienne na poszczególnych podstronach. Reszta zadziała automatycznie.

0

Dzięki, rzeczywiście to zadziałało, ale pojawił się inny problem. W stworzonym przeze mnie layoucie umieściłem całą strukturę strony, jest tam też kilka ActionLinków, gdy strona się uruchamia to wszystko jest dobrze, lecz gdy kliknę w któryś link to treść się zgadza, ale nie są przypisane żadne style które mam w osobnym pliku i przez to wszystko strasznie wygląda. Jeśli w layoucie nadał bym style bezpośrednio do div-ów to wszystko było by ok - próbowałem, ale po prostu przy kliknięciu w odnośnik nie jest uwzględniany mój plik ze stylami. Co może być nie tak?
Pozdrawiam

0

Ale załączasz te CSSy w Layout.cshtml?

0

Załączyłem ten plik w moim pliku z layoutem -_LayoutPage1.cshtml i wszystkim tym moim stronom ustawiłem ten plik jako layout więc nie dodawałem styli do pliku _Layout.cshtml, po Twoim poście spróbowałem także tam dodać plik ze stylami ale to nic nie pomogło. Tak wygląda kod

plik _LayoutPage1.cshtml

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <meta charset="UTF-8" />
    <title>@ViewBag.Title</title>
    <link rel="stylesheet" type="text/css" href="Content\Site.css" />
</head>
<body>
    <div id="kontener">
        <div id="top" style="margin:0px">
            
        </div>
        <div id="center">
            <div id="left">
                    @Html.ActionLink("O Firmie","oFirmie")  </br>
                    <a href="www.onet.pl">Dostępny towar</a> </br>
            </div>
            
            <div id="right">
                @RenderBody()
            </div>

        </div>
        <div id="bottom">
            TO jest STOPKA [CIACH!]!!!AAAA
        </div>
    </div> 
</body>
</html>

plik

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data.SqlClient;
using sklep02.Models;
namespace sklep02.Controllers
{
    public class HomeController : Controller
    {

        List<produkt> produkty = new List<produkt>();

        private void wczytajListeProduktow()
        {
         //kod
        }


        public ViewResult oFirmie()
        {
            return View();
        }
        public ActionResult Index()
        {
            wczytajListeProduktow();
            return View(produkty);
        }

    }
}

plik index.cshtml

@model List<sklep02.Models.produkt>
@{
    ViewBag.Title = "Index";
    Layout="~/Views/_LayoutPage1.cshtml";
}

Index

plik oFirmie.cshtml

@{
    ViewBag.Title = "oFirmie";
    Layout = "~/Views/_LayoutPage1.cshtml";
}

O firmie

dodanie znaczników <code class="html">, <code class="csharp"> i <code class="css"> oraz usunięcie wulgaryzmów - fp

0
<link rel="stylesheet" type="text/css" href="Content\Site.css" />

zamień na

<link rel="stylesheet" type="text/css" href="/Content/Site.css" />

a w mvc4 możesz użyć czegoś takiego jak @Styles.Render(), tylko musisz dodać swój css do bundle (->google).

1 użytkowników online, w tym zalogowanych: 0, gości: 1