简体   繁体   English

动态地将控制器返回的选择框值呈现为json

[英]dynamically render selectbox values returned from controller as json

I'm seding ajax request which sends some id. 我正在处理发送一些ID的Ajax请求。 Based on that id i'm querying data and return back to the view as json. 基于该ID,我正在查询数据并以json的形式返回视图。 Those data is used to populate selectbox inside view. 这些数据用于填充视图内的选择框。

I have working example which receives list of strings which I use to populate select box, but I want together with those string and it's id values, so I can be able to render inside select box string and it's id. 我有一个工作示例,该示例接收用于填充选择框的字符串列表,但我希望将这些字符串与它的ID值一起使用,因此我可以在选择框字符串及其ID中进行渲染。 how can I do that. 我怎样才能做到这一点。

This is what I use right now 这就是我现在使用的

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

on the 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);
    };
 });

You can return a collection of anonymous objects as json 您可以将匿名对象的集合作为json返回

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

and in the script 并在脚本中

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM