Die Methode zum Laden der Liste der Status -Drop -Down -Liste direkt beim Laden auf der Seite ist ineffizient. In diesem Artikel werden effizientere und Best Practices eingeführt.
Empfohlene Methode:
<.> 1. Verwenden Sie das Ansichtsmodell:
Erstellen Sie ein Ansichtsmodell, einschließlich der Eigenschaften von LateID, Cityid, Statelist und CityList. Dies hilft bei der Verpackung von Daten und bietet starke Typen.<.> 2. verwenden Sie nicht -invasive JavaScript:
Vermeiden Sie die Verwendung des inneren Union JavaScript in der Marke. Stattdessen wird das nichtinvasive JavaScript verwendet, um HTML und Verhalten zu trennen.
Drop -Down -Liste Änderung:
Cache -Optimierung:
@Html.DropDownList(m => m.StateID, States, "选择州") //移除onchange属性 @Html.DropDownListFor(m => m.CityID, Cities, "选择城市") //保留默认ID
<需> ajax Ersatzmethode:
const url = '@Url.Action("GetCities", "Home")'; // 使用助手方法 const citiesDropdown = $('#CityID'); // 缓存元素 $('#StateID').change(function () { $.getJSON(url, { id: $(this).val() }, function (response) { // 清空并添加默认(null)选项 citiesDropdown.empty().append($('<option></option>').val('').text('请选择')); $.each(response, function (index, item) { citiesDropdown.append($('<option></option>').val(item.Value).text(item.Text)); }); }); });
Wenn die Anzahl der Zustände und Städte begrenzt ist, können alle Städte an die Ansicht übertragen und dem JavaScript -Array zugeordnet werden. Dies kann jedoch zu einer langen Zeit der anfänglichen Belastung führen. <控> im Controller:
const cache = {}; $('#StateID').change(function () { const selectedState = $(this).val(); if (cache[selectedState]) { // 从缓存中渲染选项 // ... 使用cache[selectedState]渲染城市下拉列表 } else { $.getJSON(url, { id: selectedState }, function (response) { // 添加到缓存 cache[selectedState] = response; // ... 使用response渲染城市下拉列表 }); } });
Das obige ist der detaillierte Inhalt vonWie kann ich die Effizienz von Dropdown -Listen für Staaten und Städte verbessern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!