jquery - 使用 asp.net mvc 级联下拉菜单

标签 jquery asp.net asp.net-mvc jquery-plugins

我有一个交易者类型的下拉列表,选择后应填充交易者的下拉列表。 我的观点如下:

`<ul>
                <li>
                    <label>
                        <span class="mandatory">*</span>Trader Type:</label>
                    <%=Html.DropDownList("TraderType", (SelectList)ViewData["TraderType"])%>
                    <%--<select id="ddlTraderType" name="TraderType">
                        <%foreach (SelectListItem item in (SelectList)ViewData["TraderType"])
                          { %>
                        <option value="<%=item.Value %>">
                            <%=item.Text %></option>
                        <%} %>
                    </select>--%>
                    <span class="tagline">Select a Trader type from here<strong></strong></span></li>
                <li>
                    <label>
                        <span class="mandatory">*</span>Trader:</label>
                    <select name="Trader" id="Trader">
                    </select>
                    <span class="tagline">Select a Trader from here<strong></strong></span></li>
</ul>`

我尝试使用 JQuery,但无法获取“TraderType”下拉列表的更改事件。 我的脚本是:

$("TraderType").change(function() {
        alert("Change");
        $.ajax({ url: $("#ListTraders").attr("action"),
            type: 'GET',
            contentType: "application/json; charset=utf-8",
            cache: false,
            data: { part: $("#TraderType").val() },
            dataType: 'json',
            async: false,
            success: function(data) {
            if ((data.lstTraders.length) > 0) {
                    for (var count = 0; count < data.lstTraders.length; count++) {
                        $("#Trader").append("<option value='" + data.lstTraders[count].Id.toString() + "'>" +
                            data.lstTraders[count].TraderName + "</option>");
                    }
                }
            }
        });
    });

Controller 中的代码是:

public JsonResult ListTraders(string trdrTypeId)
    {

        IList<HSTrader> lstTraders = new List<HSTrader>();
        Build objBld = new Build();
        Document objDoc = new Document();

        string message = string.Empty;
        bool result = true;
        try
        {
            int trdrType = Convert.ToInt32(trdrTypeId);
            lstTraders = objBld.GetTradersByTrdrTypeId(trdrType);
        }
        catch (Exception ex)
        {
            message = ex.Message;
            result = false;
        }
        return Json(new { Success = result, Message = message, lstTraders = lstTraders });}

请帮我解决这个问题。

最佳答案

$("#TraderType").change(function() {

});

你失踪了# 至于 Controller 中的操作,请尝试更改 POST 中的动词

  $.ajax({ url: $("#ListTraders").attr("action"),
        type: 'POST',

像这样更改你的 Controller :

[HttpPost]
public JsonResult ListTraders(string trdrTypeId)

...当您返回 JSON 时,您应该更改此设置:

return Json(new { Success = result, Message = message, lstTraders = lstTraders }, JsonRequestBehavior.DenyGet);

另一件事,这个参数必须匹配

data: { trdrTypeId: $("#TraderType").val() },

public JsonResult ListTraders(string trdrTypeId)

关于jquery - 使用 asp.net mvc 级联下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4942909/

相关文章:

javascript - jquery html 操作不适用于选择输入

html - 如何在控件上添加 5 像素的额外边框?

Jquery 日期选择器在 div 鼠标悬停时显示,在鼠标移出时隐藏

php - 输入的国际电话号码格式

c# - 使用生成的数据阅读器对 Gridview 进行排序和分页

html - 循环遍历数据库以显示 div 中的信息

c# - 如何在 ASP.NET 应用程序运行的整个过程中保持 SqlConnection 处于打开状态?

c# - MVC DisplayFor 不渲染

javascript - 在 selectize.js 中隐藏箭头图标

asp.net - 为什么 IIS 会锁定我的 ASP.NET 网站文件夹?