下拉級聯 MVC 2 (Drop Down Cascading MVC 2)


問題描述

下拉級聯 MVC 2 (Drop Down Cascading MVC 2)

I am binding A drop down on the change of first one. But I am getting Undefined. 

Here is what I have tried. in the view

   <select id="BreakOutValue" class="input1_drop" onchange="onChange()" >
                                                                </select>
<%:Html.DropDownList("DropClient", new SelectList(Model.DropClient, "Value", "Text", Model.txtDropClient), "‑‑ Select  ‑‑", new { @class = "input1_drop", id = "DropClient", @onchange = "onClientChange();"})%>

  if ($("#DropClient").val() != '') {
                                   $.ajax({
                                       async: false,
                                       type: 'post',
                                       url: '/Report/BindBreakOutsWithClient_ID',
                                       data: { Client_ID: $("#DropClient").val() },
                                       success: function (data) {

                                           debugger;
                                           // var responseID = eval("(" + data + ")");
                                           // var SystemField = responseID.List;
                                           var items = "";
                                           $.each(data, function (i, data) {
                                              items += "<option value='" + data.Client_ID + "'>" + data.labelname + "</option>";
                                           });
                                           $("#BreakOutValue").html(items);


                                           //                                           $("#BreakOutValue option").remove();
                                           //                                           $("#BreakOutValue").append("<option value=''>‑‑ Select ‑‑</option>");
                                           //                                           for (var i = 0; i < data.length; i++) {
                                           //                                               $("#BreakOutValue").append("<option selected='selected' value=" + data.Data[i] + ">" + data.Data[i] + "</option>");
                                           //                                           }
                                       },
                                       error: function (jqXHR, textStatus, errorThrown) {
                                       }
                                   });
                            }
                            return false;
        }

In controller

   public ActionResult BindBreakOutsWithClient_ID(string Client_ID)
            {
                int Client = Convert.ToInt32(Client_ID);
               // var qBreakOut = from c in DBReport.ClientMappings orderby c.labelname ascending where c.Client_ID == Client && c.availableinui == true select c;
                var BreakOut = dbReport.ClientMappings.Where(m => m.Client_ID == Client && m.availableinui == true).OrderBy(m => m.labelname).ToList();
                return Json(new { Data = BreakOut });
            }

But I am not getting anything in the dropdown . I am getting undefined.


參考解法

方法 1:

In your controller action you have prefixed your Json response with a Data property:

return Json(new { Data = BreakOut });

So make sure that on the client you are looping on this property:

var items = "";
$.each(data.Data, function (i, item) {
    items += "<option value='" + item.Client_ID + "'>" + item.labelname + "</option>";
});
$("#BreakOutValue").html(items);

or if you want to keep your current code then return directly the list:

return Json(BreakOut);

Also I would more than strongly recommend you getting rid of the async: false parameter in your $.ajax call. By setting this parameter you are making a blocking request to the server which completely defeats the whole purpose of an AJAX call.

(by SandyDarin Dimitrov)

參考文件

  1. Drop Down Cascading MVC 2 (CC BY‑SA 3.0/4.0)

#ASP.NET #asp.net-mvc-2 #jquery #javascript #C#






相關問題

System.Reflection.Assembly.LoadFile 鎖定文件 (System.Reflection.Assembly.LoadFile Locks File)

如何在沒有全局變量的情況下一直保留我的變量? (How can I keep my variable all the time without global variables?)

C# / ASP.NET - Web 應用程序鎖定 (C# / ASP.NET - Web Application locking)

關閉模態對話框窗口後 ASP.NET 刷新父頁面 (ASP.NET Refresh Parent Page after Closing Modal Dialog Window)

無法將 NULL 值傳遞給數據庫 (Unable to pass NULL value to database)

wcf:將用戶名添加到消息頭是否安全? (wcf: adding username to the message header is this secure?)

使用 ASP.Net 教初學者 Web 開發的小項目想法 (Small projects ideas to teach beginners web development using ASP.Net)

SQL Server - 分組、擁有和計數 (SQL Server - Group by, having and count in a mix)

企業庫異常處理應用程序塊和日誌記錄應用程序塊在 ASP.NET 中的正確使用 (Enterprise Library Exception Handling Application Block and Logging Application Block proper use in ASP.NET)

來自proc的asp.net多個結果集:是否有必要將結果映射到類?如果是這樣,怎麼做? (asp.net multiple result set from proc: is it necessary to map results to class? If so, how?)

如何在測試工具中實例化 asp.net 代碼隱藏類? (How can I instantiate an asp.net codebehind class in a test harness?)

Web 窗體用戶控制事件,需要在頁面加載後添加 (Web Form User Control Event, needs to be added after page loads)







留言討論