【问题标题】:populate drop down list with Jquery on button click in mvc在 mvc 中单击按钮时使用 Jquery 填充下拉列表
【发布时间】:2013-06-14 11:51:41
【问题描述】:

我对 jQuery 很陌生,是否有一些使用 jQuery 的代码可以用来在 MVC 中填充下拉列表?

我目前正在使用 MVC 模型来填充下拉列表。如何使用 jQuery 填充下拉列表以避免回发到服务器?

目前我使用json如下:

控制器:

   [AcceptVerbs(HttpVerbs.Post)]
    public JsonResult GetTeams(StatisticModel model)
    {
        StatisticModel newModel = new StatisticModel(model.leagueId);
        var teams = newModel.getTeams;
        return Json(teams);
}

查看:

<%: Html.DropDownListFor(model => model.leagueId, Model.getLeagues, new { @class = "dropdownlistLeagueStyle" })%></td><td><input id="leagueButton" class="loginButton" value="GetTeams" type="submit" />

<select id="LeagueTeams"></select>

Javascript

$(function() {
$(".dropdownlistLeagueStyle").change(function () {
    $.getJSON("/Admin/GetTeams", { LeagueId: $(".dropdownlistLeagueStyle").val() },
  function (teams) {
      $("#LeagueTeams").empty();
      $.each(teams, function (i, team) {
         $("#LeagueTeams").append($("<option>" + team.Text + "</option>"));
     });
  });
  });
  })

但是,我在最后一个括号中收到“期望更多源字符”错误,并在测试时获取此数据:

[{"Selected":false,"Text":"Arsenal","Value":"1"},
{"Selected":false,"Text":"Aston Villa","Value":"3"},
{"Selected":false,"Text":"Cardiff City","Value":"20"},
{"Selected":false,"Text":"Chelsea","Value":"4"},
{"Selected":false,"Text":"Crystal Palace","Value":"22"}, 
{"Selected":false,"Text":"Everton","Value":"5"},
{"Selected":false,"Text":"Fulham","Value":"6"},
{"Selected":false,"Text":"Hull City","Value":"21"},
{"Selected":false,"Text":"Liverpool","Value":"7"},
{"Selected":false,"Text":"Manchester City","Value":"8"},
{"Selected":false,"Text":"Manchester United","Value":"9"},
{"Selected":false,"Text":"Newcastle United","Value":"10"},
{"Selected":false,"Text":"Norwich","Value":"11"},
{"Selected":false,"Text":"Southampton","Value":"13"},
{"Selected":false,"Text":"Stoke City","Value":"14"},
{"Selected":false,"Text":"Sunderland","Value":"15"},
{"Selected":false,"Text":"Swansea City","Value":"16"},
{"Selected":false,"Text":"Tottenham Hotspur","Value":"17"},
{"Selected":false,"Text":"West Bromwich Albion","Value":"18"},
{"Selected":false,"Text":"West Ham United","Value":"19"}]

不在下拉列表中

【问题讨论】:

  • 你能举个例子说明你想要完成什么吗?
  • 基本上我有一个包含足球联赛列表的下拉列表。选择足球联赛并单击一个按钮来获取团队。 2 个下拉列表将包含来自该联赛的球队。好的 ? ——

标签: jquery asp.net-mvc model html.dropdownlistfor


【解决方案1】:

您必须将&lt;option&gt; 附加到选择中。不只是一个字符串。此外,您正在使用team.name。在您的结果集中,每个对象都没有“名称”属性。但是有team.Text

$("#LeagueTeams").append($("&lt;option&gt;" + team.Text + "&lt;/option&gt;"));

$(function() {
    $(".dropdownlistLeagueStyle").change(function() {
        $.getJSON("/Admin/GetTeams", {
            LeagueId: $(".dropdownlistLeagueStyle").val()
        }, function(results) {
            $("#LeagueTeams").empty();
            $.each(results, function(i, team) {
                // append an option with the team name in there
                $("#LeagueTeams").append($("<option>" + team.Text + "</option>"));
            });
        });
    });
});

我用你得到的结果和一个选择做了一个 jsFiddle。

jsFiddle

另一方面,您可能希望将控制器操作的返回类型更改为 JsonResult 而不是 ActionResult

【讨论】:

  • 试试这个$("#LeagueTeams").append($("&lt;option&gt;" + team.name + "&lt;/option&gt;"));
  • 同样的东西,所有数据一直显示在另一个页面中:S 并在 javascript“期望更多源字符”末尾出现绿色错误
  • 仍有问题不知道为什么...在这篇文章中更新了我的代码。请检查一下。谢谢
  • 尝试从操作中删除[AcceptVerbs(HttpVerbs.Post)]。默认情况下,$.getJSON 调用执行的是 GET,而不是 POST。
  • 也很抱歉,您需要将其替换为 [AcceptVerbs(HttpVerbs.Get)]。如果未指定为允许 GET,JsonResult 将期待 POST。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
  • 2011-08-18
  • 1970-01-01
相关资源
最近更新 更多