0

我的 Razor 页面上有一个 DropDownList

@Html.DropDownListFor(Model => Model.Clubs, new SelectList(ViewBag.Clubs as System.Collections.IEnumerable, "Id", "Name"),
                          "-- Select a club --",
                          new { id = "ddlClubs" })

这会使用来自 javascript 函数的 Json 调用填充另一个 DropDownList:

$(function () {
  $("#ddlClubs").change(function () {
  var clubid = $(this).val();
  $.getJSON("../Administration/LoadCompsByClubId", { clubid: clubid },
    function (compsData) {
      var select = $("#ddlComps");
      select.empty();
      select.append($('<option/>', {
      value: 0,
      text: "-- select a competition --"
  }));
  $.each(compsData, function (index, itemData) {
    select.append($('<option/>', {
      value: itemData.Value,
      text: itemData.Text
    }));
  });
});

此 DropDownList 已正确填充。

@Html.DropDownList("Id", new SelectList(Enumerable.Empty<SelectListItem>(),
                    "Id", "Name"),  "-- select a competition --",
                    new{
                        id = "ddlComps",
                        data_url = Url.Action("GetTeams", "Administration")
                    })

现在,当我调用 change 函数将其加载ActionResult到 div 中时,相关的GetTeamsAction 并没有被调用。

 $(function () {
    $('#ddlComps').change(function () {
        var url = $(this).data('url');
        var value = $(this).val();
        $('#result').load(url, { id: value });

    });
});

谁能看到我哪里出错了?打赌它像往常一样简单......

4

2 回答 2

0

如果您编写返回其他下拉值的此操作的外观,那将是很好的。对我来说,听起来你没有返回 JsonResult(扩展 ActionResult),但我不能说的比我看到的更多。

于 2013-06-28T11:42:02.340 回答
0

如果您在 AdministrationController 上调用 LoadCompsByClubId 方法,似乎以下 URL 需要一些有趣的路由配置才能路由到正确的控制器。

$.getJSON("../Administration/LoadCompsByClubId", { clubid: clubid }

您确定以上内容不应该只是 mvc 控制器操作的默认设置。

$.getJSON("/Administration/LoadCompsByClubId", { clubid: clubid }

如果您查看 fiddler 或浏览器调试器中的 HTTP 流量,您是否看到来自服务器的请求和响应?

于 2013-07-02T14:31:24.540 回答