需求:選擇「車型」→ 異步載入「年代」→ 選擇「年代」→ 載入「款式」→ 選擇「款式」→ 載入「顏色」。典型三級聯動場景。
public class CarController : Controller {
// 1. 獲取車型列表 (頁面初始載入)
public ActionResult GetModels() {
var list = db.CarModels.Select(m => new { id = m.Id, name = m.Name }).ToList();
return Json(list, JsonRequestBehavior.AllowGet);
}
// 2. 根據車型獲取年代
public ActionResult GetYears(int modelId) {
var list = db.CarYears.Where(y => y.ModelId == modelId)
.Select(y => new { id = y.Id, name = y.Year }).ToList();
return Json(list);
}
// 3. 根據年代獲取款式
public ActionResult GetStyles(int yearId) { ... }
// 4. 根據款式獲取顏色
public ActionResult GetColors(int styleId) { ... }
}
<select id="ddlModel"><option value="">--請選擇車型--</option></select>
<select id="ddlYear" disabled><option value="">--請選擇年代--</option></select>
<select id="ddlStyle" disabled><option value="">--請選擇款式--</option></select>
<select id="ddlColor" disabled><option value="">--請選擇顏色--</option></select>
<script>
$(function() {
// 初始載入車型
$.getJSON('/Car/GetModels', function(data) {
$('#ddlModel').append($.map(data, function(item) {
return $('').prop('disabled', !val);
if (!val) return;
$.getJSON(url, { [paramName]: val }, function(data) {
$.each(data, function(i, item) {
$target.append($('
.fail() 提示用戶、記錄日志。OutputCache 或前端 localStorage 緩存。此模式清晰實現 MVC 三級聯動,代碼可維護、擴展性強 (增減級別只需增減 cascade 調用)。