【问题标题】:dynamically render selectbox values returned from controller as json动态将从控制器返回的选择框值呈现为 json
【发布时间】:2015-03-30 09:18:32
【问题描述】:

我正在发送一些 id 的 ajax 请求。基于那个id 我正在查询数据并以 json 格式返回视图。 这些数据用于填充视图内的选择框。

我有一个工作示例,它接收我使用的字符串列表 填充选择框,但我想与那些字符串和它的 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);
}

在视图上

 $(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);
    };
 });

【问题讨论】:

  • 您希望 ID 用于每个选项的 value 属性吗?
  • 是的,对于选项中的每个数据。

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


【解决方案1】:

您可以将匿名对象的集合返回为 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));
  });
  ....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 2020-06-07
    相关资源
    最近更新 更多