javascript - 动态将从 Controller 返回的选择框值呈现为 json

标签 javascript c# jquery .net asp.net-mvc

我正在发送ajax请求,发送一些id。根据该id 我正在查询数据并以 json 形式返回到 View 。 这些数据用于填充 View 内的选择框。

我有一个工作示例,它接收我用来的字符串列表 填充选择框,但我想与这些字符串及其 id 值一起使用,这样我就可以 在选择框字符串及其 id 内呈现。 我怎样才能做到这一点。

这就是我现在用的

public JsonResult GetKeywords(int id) 
{
    List<string> data = new List<string>();
    var dataKeywords = db.KeyWords.Where(x => x.id == id).ToList();            
    foreach (var item in dataKeywords)
    {
        data.Add(item.Title);                
        // how to pass id?
    }
    return Json(data);
}

在 View 上

 $(document).ready(function () {
    ...
    options.success = function (dataList) {
        $("#myKeywords").empty();
        for (var i = 0; i < dataList.length; i++) {
            $("#myKeywords").append("<option>" + dataList[i] + "</option>");
        }
        $("#myKeywords").prop("disabled", false);
    };
 });

最佳答案

您可以以 json 形式返回匿名对象的集合

var dataKeywords = db.KeyWords.Where(x => x.id == id).Select(x => new
{
  ID = x.id,
  Text = x.Title
};
return Json(dataKeywords); // JsonRequestBehavior.AllowGet?

在脚本中

options.success = function(dataList) {
  $.each(dataList, function(index, item) {
    $("#myKeywords").append($('<option></option>').val(item.ID).text(item.Text));
  });
  ....

关于javascript - 动态将从 Controller 返回的选择框值呈现为 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29342454/

相关文章:

javascript - 如何用javascript中的分割值进行分割?

javascript - 如何在javascript中使用替换复制文本

获取运行时默认语言环境的 JavaScript 标准 API?

javascript - 在javascript中将字符串拆分为单词

c# - 如何在 LINQ 中选择查询时存储变量?

c# - 通过其容器的 get 访问器通过 set 访问器为属性赋值是一件坏事吗?

jquery - 制作一个 jQuery 文本 slider

jQuery 绑定(bind)元素可见性与条件

jquery - 简单的跨浏览器文本区域扩展器

c# - ASP.NET MVC C# Razor 缩小