【问题标题】:JSon in MVC4 using javascriptMVC4中的JSon使用javascript
【发布时间】:2014-02-15 07:23:13
【问题描述】:

我是 JavaScript 新手.... 我在数据库中有数据...... 我通过使用 linQ 得到它,如下所示

 public List<SelectListItem> getTokens()
    {
        var tokens = from T in db.tokens select T;
        List<SelectListItem> items = new List<SelectListItem>();
        foreach (var t in tokens)
        {
          items.Add(new SelectListItem { Value = t.id.ToString(), Text = t.tname });
        }

        return items.ToList<SelectListItem>;
 }

或者

 public string getTokens()
 {
  var tokens = from T in db.tokens select T;
  string s = "[";
        foreach (var t in tokens)
        {
            s += "{ id:" + t.id.ToString() + ", name: " + t.tname + "},";
        }
        s += "]";
        return s;
}

我想将该字符串/列表传递给我的 JS 函数,类似这样...

$(document).ready(function() {
        $("#demo-theme").tokenInput([
            { id: 7, name: "Ruby" },
            { id: 11, name: "Python" },
            { id: 13, name: "JavaScript" },
            { id: 17, name: "ActionScript" },
            { id: 19, name: "Scheme" },
            { id: 23, name: "Lisp" },
            { id: 29, name: "C#" },
            { id: 31, name: "Fortran" },
            { id: 37, name: "Visual Basic" },
            { id: 41, name: "C" },
            { id: 43, name: "C++" },
            { id: 47, name: "Java" }],
            {theme: "ab"
        });
    });

我需要用我的字符串/列表替换第一个项目列表... 或者任何其他方式通过....

【问题讨论】:

    标签: c# javascript json linq asp.net-mvc-4


    【解决方案1】:

    第二个就快到了,只需将其转换为 JSON 响应,无需尝试自己序列化。

    public JsonResult getTokens()
    {
        return Json(db.tokens.ToList(), JsonRequestBehavior.AllowGet);
    }
    

    然后这将从 AJAX 请求返回,正是您想要传递给该 javascript 方法的内容(假设令牌没有您想要去除的额外属性)。

    更新: Jquery Ajax 文档位于:https://api.jquery.com/jQuery.ajax/

    但是,让我为您提供一个简单的替代方案,以防您只是想将一个对象放入 JavaScript 并且它不需要/想要异步。您可以简单地使用列出所有令牌的字段更新您的 MVC ViewModel,并将其传递到您视图中的脚本中。

    public ActionResult YourExistingAction()
    {
        YourExistingViewModel model = new YourExistingViewModel();
        model.Tokens = db.tokens.ToList();
        return View(model);
    }
    

    然后以你的观点:

    @model YourExistingViewModel
    
    <script>
        var tokens = @Html.Raw(Json.Encode(Model.Tokens));
        $(function() {
            $("#demo-theme").tokenInput(tokens, { theme: "ab" });
        });
    </script>
    

    【讨论】:

      【解决方案2】:
      public JsonResult getTokens()
      {
          var tokens = from T in db.tokens select T;
          var items = tokens.Select(t =>
              new SelectListItem { Value = t.id.ToString(), Text = t.tname });
      
          return Json(items, JsonRequestBehavior.AllowGet);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-09
        相关资源
        最近更新 更多