ใน.NET MVC4
โครงการ@Styles.Render
ทำงานอย่างไร
ฉันหมายถึง@Styles.Render("~/Content/css")
ไฟล์ที่มันกำลังเรียก?
ฉันไม่มีไฟล์หรือโฟลเดอร์ชื่อ "css" ด้านในของฉัน Content
โฟลเดอร์
ใน.NET MVC4
โครงการ@Styles.Render
ทำงานอย่างไร
ฉันหมายถึง@Styles.Render("~/Content/css")
ไฟล์ที่มันกำลังเรียก?
ฉันไม่มีไฟล์หรือโฟลเดอร์ชื่อ "css" ด้านในของฉัน Content
โฟลเดอร์
คำตอบ:
กำลังเรียกไฟล์ที่รวมอยู่ในบันเดิลนั้นซึ่งถูกประกาศไว้ในBundleConfig
คลาสในApp_Start
โฟลเดอร์
ในกรณีนั้นการเรียกไปที่ @Styles.Render("~/Content/css")
กำลังเรียก "~ / Content / site.css"
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
*.min.*
มากกว่า*.*
ไฟล์
ระวังเรื่องตัวพิมพ์เล็ก หากคุณมีไฟล์
/Content/bootstrap.css
และคุณเปลี่ยนเส้นทางใน Bundle.config เป็น
รวม ( "~ / เนื้อหา / Bootstrap.css")
มันจะไม่โหลด css
สายไปงานเลี้ยงเล็กน้อย แต่ดูเหมือนว่าไม่มีใครพูดถึงการ
รวมกลุ่ม & การลดขนาดของStyleBundle
ดังนั้น ..
@Styles.Render("~/Content/css")
โทรเข้าApplication_Start()
:
BundleConfig.RegisterBundles(BundleTable.Bundles);
ซึ่งจะเรียก
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/Site.css"));
}
RegisterBundles()
รวมและย่อขนาด bootstrap.css
& Site.css
เป็นไฟล์เดียวได้ อย่างมีประสิทธิภาพ
<link href="/Content/css?v=omEnf6XKhDfHpwdllcEwzSIFQajQQLOQweh_aX9VVWY1" rel="stylesheet">
แต่ ..
<system.web>
<compilation debug="false" targetFramework="4.6.1" />
</system.web>
เฉพาะเมื่อ debug
มีการตั้งค่าในfalse
มิฉะนั้นและจะทำหน้าที่เป็นรายบุคคล
ไม่รวมหรือไม่ย่อ:Web.config
bootstrap.css
Site.css
<link href="/Content/bootstrap.css" rel="stylesheet">
<link href="/Content/Site.css" rel="stylesheet">
src="@url.content("~/Folderpath/*.css")"
ควรแสดงผลสไตล์
ตามที่กำหนดไว้ใน App_start.BundleConfig มันเป็นแค่การโทร
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
ไม่มีอะไรเกิดขึ้นแม้ว่าคุณจะลบหัวข้อนั้นออก
โปโลฉันจะไม่ใช้การรวมกลุ่มใน MVC ด้วยเหตุผลหลายประการ มันไม่ทำงานในกรณีของคุณเนื่องจากคุณต้องตั้งค่าคลาส BundleConfig แบบกำหนดเองในโฟลเดอร์ Apps_Start ของคุณ สิ่งนี้ไม่สมเหตุสมผลเมื่อคุณสามารถเพิ่มสไตล์ในส่วนหัวของ html ของคุณได้โดยง่าย:
<link rel="stylesheet" href="~/Content/bootstrap.css" />
<link rel="stylesheet" href="~/Content/bootstrap.theme.css" />
คุณยังสามารถเพิ่มสิ่งเหล่านี้ไปยัง Layout.cshtml หรือคลาสบางส่วนที่ถูกเรียกจากมุมมองทั้งหมดของคุณและวางลงในแต่ละหน้า หากสไตล์ของคุณเปลี่ยนคุณสามารถเปลี่ยนชื่อและพา ธ โดยไม่ต้องคอมไพล์ใหม่
การเพิ่มลิงค์แบบตายตัวลงใน CSS ในการแบ่งคลาสโดยมีวัตถุประสงค์เพื่อแยก UI และการออกแบบออกจากโมเดลแอปพลิเคชันเช่นกัน คุณไม่ต้องการให้จัดการสไตล์ชีตแบบแผ่นในรหัส c # เนื่องจากคุณไม่สามารถสร้าง "สกิน" หรือแยกแบบจำลองสไตล์สำหรับอุปกรณ์ต่าง ๆ ธีมและอื่น ๆ เช่น:
<link rel="stylesheet" href="~/UI/Skins/skin1/base.css" />
<link rel="stylesheet" href="~/UI/Skins/skin2/base.css" />
การใช้ระบบนี้และมีดโกนคุณสามารถเปลี่ยน Skin Path จากฐานข้อมูลหรือการตั้งค่าผู้ใช้และเปลี่ยนการออกแบบทั้งหมดของเว็บไซต์ของคุณโดยเพียงแค่เปลี่ยนเส้นทางแบบไดนามิก
วัตถุประสงค์ทั้งหมดของ CSS 15 ปีที่ผ่านมาคือการพัฒนา "สกิน" สไตล์ชีทที่ควบคุมโดยผู้ใช้และการควบคุมแอปพลิเคชันสำหรับเว็บไซต์ดังนั้นคุณสามารถสลับ UI รูปลักษณ์และความรู้สึกแยกจากแอปพลิเคชันและนำเนื้อหาที่เป็นอิสระของโครงสร้างข้อมูล .... เช่นรุ่นสำหรับพิมพ์, มือถือ, รุ่นเสียง, raw xml, เป็นต้น
ด้วยการย้ายกลับไปยังระบบเส้นทางแบบ "ล้าสมัย" นี้โดยใช้คลาส C # สไตล์แข็งเช่น Bootstrap และการรวมชุดรูปแบบของไซต์ด้วยรหัสแอปพลิเคชันเราได้ย้อนกลับไปอีกครั้งกับการสร้างเว็บไซต์ในปี 1998
minification
แล้ว? : s / :(
ฉันทำทุกสิ่งที่จำเป็นเพื่อเพิ่มการรวมลงในเว็บ MVC 3 (ฉันใหม่กับโซลูชันที่มีอยู่) Styles.Render
ไม่ได้ผลสำหรับฉัน ในที่สุดฉันก็ค้นพบว่าฉันแพ้ลำไส้ใหญ่ ในหน้าต้นแบบ: <%: Styles.Render("~/Content/Css") %>
ฉันยังคงสับสนเกี่ยวกับสาเหตุที่ (ในหน้าเดียวกัน) <% Html.RenderPartial("LogOnUserControl"); %>
ทำงานโดยไม่มีเครื่องหมายโคลอน