ASP.NET Core Controllers, Views และ ViewModels ใน DLLs แยกกัน

ฉันมีการตั้งค่าเว็บไซต์ ASP Core MVC โดยใช้คุณสมบัติ โดยพื้นฐานแล้วแต่ละ คอนโทรลเลอร์และมุมมองและโมเดลมุมมองที่เกี่ยวข้องอยู่ในโฟลเดอร์เดียว ฉันต้องการขยายสิ่งนี้เพื่อให้แต่ละฟีเจอร์ใน DLL แยกกัน ตัวอย่างเช่น ฉันจะมี dll "Accounts" ที่มี AccountController และ Views ที่เกี่ยวข้อง และฉันยังมี dll "Shared" ที่มีมุมมองที่ใช้ร่วมกัน เช่น _Layout.cshtml

เพื่อแสดงให้เห็นสิ่งที่ฉันพยายามทำ รูปภาพด้านล่างนี้นำมาจาก บทช่วยสอนนี้< /ก>. ฉันต้องการให้แต่ละกล่องสีแดงเป็น dll แยกกัน

กล่องสีแดงใน dll แยกกัน

ใครรู้วิธีการทำเช่นนี้?


person Zeus82    schedule 22.12.2017    source แหล่งที่มา
comment
สิ่งที่คุณต้องอ่าน: en.wikipedia.org/wiki/KISS_principle   -  person R. Richards    schedule 23.12.2017
comment
แล้วปัญหาของคุณคืออะไร? มีโพสต์เอกสารเกี่ยวกับการค้นพบประเภทนี้: แอปพลิเคชัน ชิ้นส่วนใน ASP.NET Core   -  person Set    schedule 24.12.2017
comment
โฟลเดอร์ฟีเจอร์เป็นแนวคิดที่ดี แต่โปรเจ็กต์ต่อฟีเจอร์จะเพิ่มงานมากมาย หากคุณต้องการหนึ่งฟีเจอร์เพื่อเป็นไมโครเซอร์วิส ฉันแนะนำให้แยกข้อมูลนั้นออกเมื่อคุณต้องการ จริงๆ แล้วฉันพยายามปรับใช้ทุกอย่างเป็น dll เดียวถ้าเป็นไปได้   -  person Steven T. Cramer    schedule 06.08.2018


คำตอบ (1)


ลองดังต่อไปนี้:

  1. สร้างแอป ASP.NET Core ใหม่ที่มีโฟลเดอร์เดียวชื่อ พื้นที่
  2. ภายในโฟลเดอร์ Areas ให้เพิ่มโฟลเดอร์ใหม่ (ชื่อของคุณสมบัติ) ตัวอย่างเช่น นินจา
  3. เพิ่มการอ้างอิงถึงโครงการนี้ในโครงการเว็บหลัก
  4. กำหนดค่าเว็บแอปเพื่อจัดการพื้นที่ในเส้นทาง บางอย่างเช่นนี้:

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "areaRoute", 
            template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
    
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
    
person Bill    schedule 17.09.2018