动态渲染从控制器返回的selectbox值为json

时间:2015-03-30 09:18:33

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

我正在发送一个发送一些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);
    };
 });

1 个答案:

答案 0 :(得分:2)

您可以将一组匿名对象作为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));
  });
  ....