"ตรรกะการนำเสนอ" คืออะไรและยอมรับได้ในมุมมองเท่าใด


13

ในเว็บแอปพลิเคชันของฉันฉันต้องจัดเตรียมแบบฟอร์มสำหรับการสร้างและแก้ไข แบบฟอร์มสำหรับการสร้างและการแก้ไขมีความแตกต่างเล็กน้อยดังนั้นฉันจึงคิดที่จะทำสิ่งนี้ในมุมมองของฉัน:

<form>
// a lot of htnl goes here 
@if (editing)
{
  // some more fields shown in edit mode
}
@if(!editing)
{
 // some stuff shown in create mode
}

ฉันพยายามไม่ใส่ifข้อความใด ๆในมุมมองของฉัน แต่ครั้งนี้ฉันไม่เห็นตัวเลือกอื่นนอกจากคัดลอกส่วนใหญ่ของ HTML ในสองแห่งซึ่งฉันไม่ต้องการทำ นี่เป็น "ตรรกะการนำเสนอ" ที่เหมาะสมหรือไม่และมีตัวเลือกอื่น ๆ อีกหรือไม่

คำตอบ:


17

ตรรกะการนำเสนอประกอบด้วยตรรกะและการคำนวณที่จำเป็นในการนำเสนอข้อมูลธุรกิจในแบบที่ถูกต้องสำหรับมุมมองเฉพาะ
สำหรับมุมมองกราฟิกที่ซับซ้อนนี่อาจเป็นการคำนวณที่ค่อนข้างซับซ้อน (ตัวอย่างเช่นการคำนวณขนาดของแต่ละชิ้นวงกลมและตำแหน่งของป้ายกำกับสำหรับแผนภูมิวงกลม) แต่คุณสมบัติหลักคือมันจะคำนวณเฉพาะข้อมูลที่เกี่ยวข้องกับปัจจุบัน ดูและไม่ได้แก้ไขข้อมูลธุรกิจในทางใดทางหนึ่ง

การเลือกฟิลด์สำหรับโหมดแก้ไข / สร้างเป็นการใช้ตรรกะการนำเสนอที่เหมาะสมหรือไม่ ในส่วนนี้ขึ้นอยู่กับชนิดและปริมาณของการปรับแต่ง
ตัวอย่างเช่นหากความแตกต่างเป็นเพียงการเปลี่ยนชื่อเรื่องหรือแสดงเขตข้อมูลหนึ่งหรือสองเขตเป็นแบบอ่านอย่างเดียวในโหมดใดโหมดหนึ่งก็เป็นทางเลือกที่เหมาะสมที่จะมีมุมมองเดียวและเลือกโหมดแบบไดนามิก
ในทางกลับกันปฏิกิริยาแรกของฉันคือมันควรจะเป็นสองมุมมองที่แตกต่างกันโดยที่ชิ้นส่วนทั่วไปจะถูกนำเข้าจากไฟล์ที่สาม (คล้ายกับการเพิ่มหัวกระดาษและท้ายกระดาษในมุมมองทั่วไป)


12

ดูเหมือนว่าเหมาะสมอย่างยิ่งที่จะใช้คำสั่ง @ หากมีสองคำสั่งในมุมมองมีดโกน
พวกเขาเพิ่ม @if to มีดโกน - มันตั้งใจที่จะใช้

รหัสของคุณสามารถย่อให้เหลือเพียง @if หนึ่งตัว:

@if (editing)
{
  // some more fields shown in edit mode
}
else
{
 // some stuff shown in create mode
}

อีกทางเลือกหนึ่งคือใช้สามมุมมอง:

  • มุมมองบางส่วนที่มี HTML ทั่วไป
  • สร้างมุมมอง (เรียกมุมมองบางส่วน)
  • แก้ไขมุมมอง (เรียกมุมมองบางส่วนด้วย)

คุณสามารถตรวจสอบ DisplayTemplates และ EditorTemplates ซึ่งเป็นวิธีที่ดีในการแยกมุมมองแบบอ่านอย่างเดียวและแก้ไขได้

http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor-templates.html

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.