Pertanyaan ASP. NET: Kontrol beban dinamis vs Visible = true


Mana yang direkomendasikan? Biarkan saya menjelaskan apa yang ingin saya capai!
Saya memiliki satu halaman yang digunakan oleh banyak pengguna, setiap pengguna memiliki Peran yang berbeda seperti admin, operator, pengguna normal.
Ketika klien membuka halaman itu saya ingin menampilkan satu set kontrol (tombol) yang tergantung pada Peran mereka.
admin diperbolehkan melakukan x dan y, tetapi pengguna normal tidak diizinkan untuk melakukan tindakan ini.

Untuk mencapai apa yang ingin saya lakukan, pendekatan mana yang terbaik?
Haruskah saya mendefinisikan semua kontrol dalam HTML lalu beralih properti Terlihat, atau memuat kontrol yang dibutuhkan secara dinamis?


Untuk Terlihat = false Saya khawatir tentang waktu pemrosesan server. Bahkan jika HTML markup tidak dikirim ke klien untuk Visible = false control, saya tahu bahwa kontrol masih dimuat oleh ASP .NET dan mungkin bahkan diproses, tetapi hasil HTML-nya tidak ditulis ke arus keluaran.

Untuk kontrol yang dimuat secara dinamis, satu yang tidak nyaman adalah bahwa mereka perlu diinisialisasi ulang pada Postback, juga ada beberapa masalah dengan acara dan postback.


5
2017-08-20 04:58


asal


Jawaban:


Saya tidak akan melakukannya secara dinamis karena keuntungannya tidak sebanding dengan kompleksitas atau penghematan yang dirasakan. Juga jika Anda mengatur visible = false, perlu diingat bahwa kondisi tampilan masih diaktifkan untuk kontrol Anda. Jika Anda khawatir tentang data bolak-balik dan berurusan dengan kondisi tampilan yang lebih besar, pastikan Anda menonaktifkan kondisi tampilan untuk semua kontrol atau untuk panel induk yang berisi mereka. Anda akan memiliki ketidaknyamanan yang sama untuk mempertahankan negara mereka di postback karena melakukannya secara dinamis.

Juga, melakukannya secara non-dinamis jauh lebih mudah untuk dipelihara oleh orang berikutnya yang bekerja dengan kode itu. Tata letaknya jelas dan lebih mudah untuk memvisualisasikan daripada mencoba untuk mencari tahu apa kode kapan meletakkan apa di mana.

Membuat kontrol secara dinamis benar-benar tidak memberi Anda banyak kecuali untuk mengesampingkan kondisi tampilan dan mungkin sisi server pemrosesan yang dapat diabaikan. Saya pikir Anda akan merasa sulit untuk bahkan mengukur banyak perbedaan yang terlihat, bahkan di bawah beban antara, kontrol non-viewstate dan overhead secara dinamis harus menambahkannya sesuai kebutuhan.

Terakhir, lebih mudah untuk tidak melakukannya secara dinamis jadi mengapa tidak mengambil rute paling mudah terlebih dahulu dan lihat apakah itu masalah. Jika itu menjadi masalah kemudian perbaiki jika perlu.


3
2017-08-20 05:28



.Visible = false merupakan pendekatan yang cukup masuk akal untuk ini. Jangan menyibukkan diri dengan kecepatan metode ini sampai Anda membuktikan, melalui profil, bahwa itu diperlukan.


1
2017-08-20 05:00



Bagaimana jika Anda menempatkan kontrol dari peran yang berbeda di panel yang berbeda dan hanya keseluruhan panel Terlihat / tidak terlihat


1
2017-08-20 05:03



Ketidaknyamanan lain dengan kontrol dinamis adalah banyaknya kode rapuh yang harus Anda tulis untuk menangani mereka, dan sakit kepala dengan debugging mereka. Kecuali Anda memiliki kontrol yang sangat kompleks yang menghabiskan banyak waktu, atau Anda benar-benar telah mengidentifikasi masalah kinerja, saya akan sangat menyarankan metode yang tidak terlihat (dan secara teratur). Ini adalah prinsip KISS dalam tindakan (belum lagi prinsip "jangan pra-optimasi").


1
2017-08-20 05:05