javascript - 尝试更新 jQuery 发布结果中的选择列表选项

标签 javascript jquery .net json razor

我的 View 中有以下下拉菜单...

<div class="editor-field">
  @Html.DropDownListFor(model => model.CategoryId, new SelectList(new List<string>(), ""), "Select ...")
</div>

我的 Controller 包含以下操作方法,我调用它来更新选项...

[HttpPost]
    public ActionResult GetCategories(int ChallengeId, string Gender, DateTime BirthDate)
    {
        CategoriesContext db = new CategoriesContext();
        ChallengesContext cc = new ChallengesContext();
        Challenge challenge = cc.Challenges.Where(c => c.ChallengeId == ChallengeId).Single();
        var categories = db.Categories.Where(c => c.GenderOption == Gender && c.SponsorId == challenge.SponsorId).AsEnumerable()
                                      .Select(s => new SelectListItem { Text = s.CategoryName, Value = s.CategoryId.ToString() }).ToList();

        SelectList list = new SelectList(categories);
        return Json(list);
    }

当页面上的另一个项目发生变化时,我调用以下函数:

function GetCategories() {
  var _challengeid = $('#ChallengeId').val();
  var _gender = $('#Gender').val();
  var _birthdate = $('#Birthdate').val();

  if (_birthdate != "" && _gender != "" && _challengeid > 0) {
    $('html,body').css('cursor', 'wait');
    var url = '@Url.Action("GetCategories", "Coach")';
    $.post(url, { ChallengeId: _challengeid, Gender: _gender, BirthDate: _birthdate }, function (data) {
      $("#CategoryId").empty();
      $.each(data, function (index, val) {
        $('#CategoryId')
          .append($("<option></option>")
          .attr("value", val.Text)
          .text(val.Text));
      });
      $('html,body').css('cursor', 'auto');
    }, "json");
  }

下拉项只是充满了“System.Web.Mvc.SelectListItem”。我得到了我所有的元素,但是从操作方法转移我的元素或我在我的 javascript 中获取它们的方式都不对。谁能指出我的问题是什么?谢谢!

最佳答案

确实没有理由将 JSON 包裹在 SelectList 中。

var categories = db.Categories.Where(c => c.GenderOption == Gender && c.SponsorId == challenge.SponsorId)
    .Select(s => new { Text = s.CategoryName, Value = s.CategoryId.ToString() });
return Json(categories);

检查浏览器中的调试器,data 响应应该是一个 JSON。

关于javascript - 尝试更新 jQuery 发布结果中的选择列表选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27590787/

相关文章:

javascript - 按钮可调整大小的jquery magic margin

c# - 使用 MonoTouch 反序列化 mRSS/RSS2.0

c# - 如何从 Azure AD JWT 声明中获取用户的名字和名字?

javascript - 提供者 'xx' 必须从 $get 工厂方法返回一个值

javascript - Electron TypeError : $(. ..).jstree 在我尝试使用它时不是一个函数

jquery - 使用 jquery ajax 发送用户名和密码

c# - 满足这些要求的最佳 ORM 是什么

javascript - JQuery - 如何查找触发操作单击事件的 id 或行?

javascript - 带正方形的特殊布局 div 正方形

javascript - 从 2 个数组中的 1 个构建的 React .map