Pertanyaan Bagaimana Saya Dapat Memiliki konten Tampilan-Spesifik Menggunakan Asp.Net MVC 3 dan Razor?


Saya ingin menautkan lembar gaya tertentu di Tampilan tertentu selain yang sudah ditautkan di _Layout.cshtml. Untuk non-Razor, saya melihat menggunakan pemegang tempat konten. Bagaimana saya melakukan ini untuk Razor?


32
2018-01-19 19:45


asal


Jawaban:


Setara dengan placeholder konten di Razor adalah bagian.

Di _Layout.cshtml Anda:

<head>
@RenderSection("Styles", required: false)
</head>

Kemudian di halaman konten Anda:

@section Styles {
    <link href="@Url.Content("~/Content/StandardSize.css")" />
}

Solusi alternatif adalah menempatkan style Anda ke ViewBag / ViewData:

Di _Layout.cshtml Anda:

<head>
    @foreach(string style in ViewBag.Styles ?? new string[0]) {
        <link href="@Url.Content(style)" />
    }
</head>

Dan di halaman konten Anda:

@{
    ViewBag.Styles = new[] { "~/Content/StandardSize.css" };
}

Ini berfungsi karena halaman tampilan dijalankan sebelum tata letak.


45
2018-01-19 20:11



Anehnya (untuk saya), asp: ContentPlaceHolder tidak berfungsi. Tampaknya sangat tidak mengesankan. Saya ingin tahu apakah ada cara lain?

Secara khusus, Anda masukkan <asp:ContentPlaceHolder ID="HeadContent" runat="server" /> di _layout.cshtml dan

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> 
    <link href="@Url.Content("~/Content/StandardSize.css")" rel="stylesheet" type="text/css" />
</asp:Content>

dalam pandanganmu.


-2
2018-01-19 20:00