JavaScript函数不调用ActionResult

时间:2013-06-11 10:01:47

标签: c# javascript asp.net-mvc-4

我的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中时,未调用关联的GetTeams Action。

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

    });
});

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

2 个答案:

答案 0 :(得分:0)

如果你写下这个返回其他下拉值的动作是什么样子会很好。对我来说,这听起来好像你没有返回JsonResult(扩展ActionResult),但我看不出比我看到的更多。

答案 1 :(得分:0)

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

$。getJSON(“../ Administration / LoadCompsByClubId”,{clubid:clubid}

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

$。getJSON(“/ Administration / LoadCompsByClubId”,{clubid:clubid}

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