Apa itu "logika presentasi" dan berapa banyak yang dapat diterima dalam pandangan?

13

Dalam aplikasi web saya, saya harus menyediakan formulir untuk membuat dan mengedit. Bentuk untuk membuat dan mengedit memiliki perbedaan kecil, jadi saya berpikir untuk melakukan sesuatu seperti ini dalam pandangan saya:

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

Saya selalu berusaha untuk tidak menempatkan ifpernyataan dalam pandangan saya, tetapi kali ini saya tidak melihat opsi lain selain menyalin sebagian besar HTML di dua tempat, yang tidak ingin saya lakukan. Apakah ini "logika presentasi" yang tepat dan apakah ada opsi lain?

Georgi Georgiev
sumber

Jawaban:

17

Logika presentasi terdiri dari logika dan perhitungan yang diperlukan untuk menyajikan data bisnis dengan cara yang benar untuk tampilan tertentu.
Untuk tampilan grafik yang kompleks, ini bisa berupa perhitungan yang cukup kompleks (misalnya, menghitung ukuran setiap potongan pie dan penentuan posisi label untuk diagram lingkaran), tetapi karakteristik utamanya adalah hanya menghitung informasi yang relevan dengan arus. lihat dan itu tidak mengubah data bisnis dengan cara apa pun.

Apakah pemilihan bidang untuk mode edit / buat adalah penggunaan yang tepat dari logika presentasi masih bisa diperdebatkan. Sebagian itu tergantung pada jenis dan jumlah penyesuaian.
Misalnya, jika perbedaannya hanyalah perubahan judul, atau menampilkan satu atau dua bidang sebagai hanya-baca di salah satu mode, maka itu bisa menjadi pilihan yang tepat untuk memiliki satu tampilan dan memilih mode secara dinamis.
Di sisi lain, reaksi pertama saya adalah bahwa itu harus benar-benar dua tampilan berbeda, di mana bagian-bagian umum diimpor dari file ketiga (mirip dengan seberapa umum header dan footer ditambahkan ke tampilan).

Bart van Ingen Schenau
sumber
12

Tampaknya masuk akal jika menggunakan satu atau dua pernyataan @dalam tampilan Razor.
Mereka menambahkan @jika ke Razor - itu dimaksudkan untuk digunakan.

Kode Anda dapat disingkat menjadi satu @jika:

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

Alternatifnya adalah menggunakan tiga tampilan:

  • Tampilan sebagian berisi HTML umum
  • Buat tampilan (panggilan tampilan parsial)
  • Edit tampilan (juga memanggil sebagian tampilan)

Anda bisa memeriksa DisplayTemplates dan EditorTemplates, yang merupakan cara yang baik untuk memisahkan tampilan read-only dan yang dapat diedit.

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


sumber