我是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;
}
我想将该字符串/ List传递给我的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"
});
});
我需要用我的字符串/列表替换第一个项目列表... 或任何其他方式通过....
答案 0 :(得分:1)
你的第二个几乎就在那里,你只需要将它转换为JSON响应,而不需要自己尝试序列化。
public JsonResult getTokens()
{
return Json(db.tokens.ToList(), JsonRequestBehavior.AllowGet);
}
然后这将从一个AJAX请求返回,正是你要传递给javascript方法的那个(假设一个令牌没有你想要去除的额外属性)。
<强>更新强>: 可以在https://api.jquery.com/jQuery.ajax/
找到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>
答案 1 :(得分:0)
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);
}