Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh mengoptimumkan memuat dua dropdowns bergantung di MVC?

Bagaimanakah saya boleh mengoptimumkan memuat dua dropdowns bergantung di MVC?

DDD
DDDasal
2025-01-28 18:21:10854semak imbas

How Can I Optimize Loading Two Dependent Dropdowns in MVC?

Cara yang lebih baik untuk memperbaiki dua menu drop -down di MVC

Kod yang disediakan menggunakan mod MVVM untuk memuatkan negeri dan bandar secara berkesan, tetapi masih ada ruang untuk penambahbaikan.

Memudahkan pemilihan negeri dan bandar

Membina semula fungsi jQuery, gunakan kaedah untuk mengeluarkan menu drop -down bandar, dan kemudian tambahkan pilihan baru. Pertimbangkan penggunaan

bukan

sebagai pilihan pertama untuk membenarkan [diperlukan] untuk mengesahkan. .empty() val(null) val(0) Mengoptimumkan panggilan AJAX

<code class="language-javascript">var url = '@Url.Action("GetCities", "Home")';
var cities = $('#CityID');
$('#StateID').change(function() {
  $.getJSON(url, { id: $(this).val() }, function(response) {
    cities.empty().append($('<option>').val(null).text('请选择'));
    $.each(response, function(index, item) {
      cities.append($('<option>').val(item.Value).text(item.Text));
    });
  });
});</code>

Untuk mengelakkan panggilan Ajax yang berlebihan, mekanisme cache dicapai untuk menyimpan data bandar di setiap negeri.

Kaedah alternatif: Inisialisasi data bandar

<code class="language-javascript">var cache = {};
$('#StateID').change(function() {
  var selectedState = $(this).val();
  if (cache[selectedState]) {
    // 从缓存中渲染选项
    // ... 使用 cache[selectedState] 渲染城市下拉菜单 ...
  } else {
    $.getJSON(url, { id: selectedState }, function(response) {
      // 添加到缓存
      cache[selectedState] = response;
      // ... 使用 response 渲染城市下拉菜单并添加到缓存 ...
    });
  }
});</code>
Jika bilangan negeri dan bandar adalah terhad, anda boleh mempertimbangkan lulus semua bandar ke pandangan, dan menggunakan jQuery untuk menapis dan memaparkan bandar -bandar yang sepadan mengikut pilihan negara.

di pengawal:

dalam pandangan (skrip):

Petua Lain
<code class="language-csharp">model.CityList = db.Cities.Select(d => new { City = d.CountryID, Text = d.CityName, Value = d.Id }).ToList();</code>

<code class="language-javascript">// 将所有城市赋值给JavaScript数组
var allCities = JSON.parse('@Html.Raw(Json.Encode(Model.CityList))');
$('#StateID').change(function() {
  var selectedState = $(this).val();
  var cities = $.grep(allCities, function(item, index) {
    return item.CountryID == selectedState;
  });
  // 基于cities的值构建选项
  // ... 使用 cities 数组渲染城市下拉菜单 ...
});</code>
Menggunakan JavaScript bukan -invasive untuk memisahkan tanda dan tingkah laku.

Gunakan kaedah tambahan yang dibina (@url.action,@html.raw) untuk membuat kod ringkas dan mengelakkan pengekodan keras.

[

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengoptimumkan memuat dua dropdowns bergantung di MVC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn