ฉันรู้วิธีตั้งค่าไฟล์. css บนไฟล์ _Layout.cshtml แต่สิ่งที่เกี่ยวกับการใช้สไตล์ชีทบนพื้นฐานต่อการดู?
ความคิดของฉันที่นี่คือใน _Layout.cshtml คุณมี<head>
แท็กที่จะทำงานด้วย แต่ไม่ใช่ในมุมมองที่ไม่ใช่เลย์เอาต์ของคุณ ไม่ที่<link>
แท็กไป?
ฉันรู้วิธีตั้งค่าไฟล์. css บนไฟล์ _Layout.cshtml แต่สิ่งที่เกี่ยวกับการใช้สไตล์ชีทบนพื้นฐานต่อการดู?
ความคิดของฉันที่นี่คือใน _Layout.cshtml คุณมี<head>
แท็กที่จะทำงานด้วย แต่ไม่ใช่ในมุมมองที่ไม่ใช่เลย์เอาต์ของคุณ ไม่ที่<link>
แท็กไป?
คำตอบ:
สำหรับ CSS ที่นำกลับมาใช้ใหม่ในไซต์ทั้งหมดฉันกำหนดไว้ใน<head>
ส่วนของ_Layout
:
<head>
<link href="@Url.Content("~/Styles/main.css")" rel="stylesheet" type="text/css" />
@RenderSection("Styles", false)
</head>
และถ้าฉันต้องการสไตล์ที่เฉพาะเจาะจงบางมุมมองฉันกำหนดStyles
ส่วนในแต่ละมุมมอง:
@section Styles {
<link href="@Url.Content("~/Styles/view_specific_style.css")" rel="stylesheet" type="text/css" />
}
แก้ไข: มีประโยชน์ที่จะทราบว่าพารามิเตอร์ที่สองใน @RenderSection, false หมายความว่าไม่จำเป็นต้องใช้ส่วนในมุมมองที่ใช้หน้าต้นแบบนี้และเครื่องมือดูจะละเว้นความจริงที่ไม่มีส่วน "สไตล์" ที่กำหนดไว้ ในมุมมองของคุณ หากเป็นจริงมุมมองจะไม่แสดงผลและจะมีข้อผิดพลาดเกิดขึ้นเว้นแต่มีการกำหนดส่วน "สไตล์"
RenderSection
(น่าแปลกใจ :) ไม่ใช่ที่ส่วนท้ายของส่วนหัว
ฉันพยายามเพิ่มบล็อกอย่างเช่น:
@section styles{
<link rel="Stylesheet" href="@Href("~/Content/MyStyles.css")" />
}
และบล็อกที่เกี่ยวข้องในไฟล์ _Layout.cshtml:
<head>
<title>@ViewBag.Title</title>
@RenderSection("styles", false);
</head>
ซึ่งใช้งานได้! แต่ฉันไม่สามารถช่วย แต่คิดว่ามีวิธีที่ดีกว่า UPDATE: เพิ่ม "เท็จ" ใน@RenderSection
คำสั่งเพื่อให้มุมมองของคุณจะไม่ 'Splode เมื่อคุณละเลยที่จะเพิ่มที่เรียกว่า@section
head
"Head"
ไม่มีวิธีที่ดีกว่าถึงแม้ว่าฉันจะชื่อส่วน
@RenderSection()
นั่นเป็นเหตุผลที่ผมเพิ่มอาร์กิวเมนต์เท็จ จับดี.
การใช้
@Scripts.Render("~/scripts/myScript.js")
หรือ
@Styles.Render("~/styles/myStylesheet.css")
สามารถใช้ได้สำหรับคุณ
เลย์เอาต์ทำงานเหมือนกับมาสเตอร์เพจ การอ้างอิง CSS ใด ๆ ที่มีรูปแบบหน้าลูก ๆ จะมี
ฉันชอบใช้มีดโกนผู้ช่วย html จาก Client Dependency dll
Html.RequireCss("yourfile", 9999); // 9999 is loading priority
คุณสามารถโครงสร้างนี้ในไฟล์ Layout.cshtml
<link href="~/YourCssFolder/YourCssStyle.css" rel="stylesheet" type="text/css" />