iT邦幫忙

0

【已解決】C# .NET7.0 MVC 下拉第一個選單選擇後第二個下拉式選單出現不同的選項

  • 分享至 

  • xImage

更新

$("#ClassSelect2").append('<option value="' + subcategory.Value + '">' + subcategory.Text + '</option>');

改成

$("#ClassSelect2").append('<option value="' + subcategory + '">' + subcategory + '</option>');

原來不用.Value跟Text就可以了((

如題
我問了GPT後照他的方式改了改可是列表有出來,數量也正確,但文字都是顯示"undefined"

//View
<script type="text/javascript">
    $(document).ready(function () {
        //監聽第一個下拉選單的 onchange 事件
        $("#ClassSelect1").change(function () {
            //獲取第一個選單中選擇的選項值
            var categoryId = $(this).val();
            //使用 AJAX 向服務器發送請求,獲取第二個選單中的選項
            $.ajax({
                url: '/Home/GetSubcategories', //請求的URL
                data: { categoryId: categoryId }, //傳遞的參數
                type: 'GET', //請求類型
                success: function (subcategories) {
                    //清空第二個選單
                    $("#ClassSelect2").empty();
                    //在第二個選單中顯示選項
                    $.each(subcategories, function (index, subcategory) {
                        $("#ClassSelect2").append('<option value="' + subcategory.Value + '">' + subcategory.Text + '</option>');
                    });
                },
                error: function (ex) {
                    alert('Failed to retrieve subcategories.' + ex);
                }
            });
            return false;
        })
    });
</script>
//原先他給我的Controller
[HttpGet]
        public ActionResult GetSubcategories(int categoryId)
        {
            DBmanager db = new DBmanager();
            List<class_2> subcategories_G = db.GetClass_2(categoryId);
            List<string> subcategories = new();
            foreach(var subcategory in subcategories_G) 
            { 
                subcategories.Add(subcategory.class_name); 
            }
            return Json(subcategories, JsonRequestBehavior.AllowGet);
        }
//後來因為找不到"JsonRequestBehavior.AllowGet"所以改的Controller
[HttpGet]
        public ActionResult GetSubcategories(int categoryId)
        {
            DBmanager db = new DBmanager();
            List<class_2> subcategories_G = db.GetClass_2(categoryId);
            List<string> subcategories = new();
            foreach(var subcategory in subcategories_G) 
            { 
                subcategories.Add(subcategory.class_name); 
            }
            return Json(subcategories);
        }
看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2023-01-31 09:44:00 檢舉
在第一段 success 裡面加個 console.log(subcategories),看看傳回的資料是啥...
我是回傳id,確定是正確的,畢竟下拉後對應的數量也是相同的,只有顯示的文字都變成"undefined"
johncoc iT邦新手 3 級 ‧ 2023-01-31 10:03:00 檢舉
回傳的subcategory有Text屬性?(大小寫完全一樣)
froce iT邦大師 1 級 ‧ 2023-01-31 10:04:46 檢舉
不是要看你的回傳資料是否正確,是要看你回傳資料的屬性...
想請問最後是怎麼解決的?謝謝
最後是因為我回傳的是string list所以不用加上後面的.value或是.text
若回傳的是object的list才需要針對給予的變數名稱提供尾贅
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答