Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Controller中的对象创建js_Javascript_C#_Asp.net Mvc - Fatal编程技术网

Javascript 如何使用Controller中的对象创建js

Javascript 如何使用Controller中的对象创建js,javascript,c#,asp.net-mvc,Javascript,C#,Asp.net Mvc,在我的实际任务中,我需要为基于ASP.NET MVC的应用程序创建图形。 我找到了合适的js,但我遇到了一个问题:如何从控制器中创建的值创建js对象。 例如: public class User { public string Name { get; set; } public string Group { get; set; } } public ActionResult Index() { List<User> users = new

在我的实际任务中,我需要为基于ASP.NET MVC的应用程序创建图形。 我找到了合适的js,但我遇到了一个问题:如何从控制器中创建的值创建js对象。 例如:

public class User
{
    public string Name { get; set; }
    public string Group { get; set; }
}
   public ActionResult Index()
    {
        List<User> users = new List<User>()
        {
            new User{Name = "Boss", Group = "Boss"},
            new User{Name = "Emp 1", Group = "Emps"},
            new User{Name = "Emp 2", Group = "Emps"},
            new User{Name = "Emp 3", Group = "Emps"},
            new User{Name = "Emp 4", Group = "Emps"},
        };
        ViewBag.Users = users;
        return View();
    }
我想创建js代码,就像

var nodes = function () {
        var array = [];
        for (var i = 0; i < @ViewBag.Users.Count; i++) {
            array.push({"name": @ViewBag.Users[i].Name, "group": @ViewBag.Users[i].Group})
        }
        return array;

   };
var节点=函数(){
var数组=[];
对于(var i=0;i<@ViewBag.Users.Count;i++){
array.push({“name”:@ViewBag.Users[i].name,“group”:@ViewBag.Users[i].group})
}
返回数组;
};

注意:由于
i
不存在,此代码不起作用。

您可以使用以下代码来实现此目的

var nodes = function () {
  var array = [];
  @for(int i = 0; i < 5; i++) {
     <text>
       array.push({"name": "@ViewBag.Users[i].Name", "group": "@ViewBag.Users[i].Group"})
     </text>
  }
  return array;
}
var节点=函数(){
var数组=[];
@对于(int i=0;i<5;i++){
array.push({“name”:“@ViewBag.Users[i].name”,“group”:“@ViewBag.Users[i].group”})
}
返回数组;
}
试着用


参考:您可以将用户列表序列化为JSON对象。我想这就是你想要得到的结果。这是最简单的方法

ViewBag.Users = JsonConvert.SerializeObject(users);
我用你的例子创建了一个.net小提琴。请检查一下

对于这段代码,您需要包含Newtonsoft.Json NuGet包。如果您不想使用此软件包,可以使用
JavaScriptSerializer.Serialize

方法从System.Web.Scripts.Serialization。点击查看更多信息。

我认为有更好的方法解决您的问题。您正在询问如何从视图中的控制器传递值。您的方法可以工作,但将对象作为视图的模型传递要简单得多。 返回View()时,需要传递包含列表的对象。 这样地:
返回视图(用户)
然后,在您的视图中,您需要注册您的模型
@model IEnumerable()
之后,使用简单的
foreach
可以迭代模型并显示值:

@foreach(var item in Model){
    //do whatever you want with the item
}
如果需要将模型元素添加到节点变量中,可以这样做:

<script>
var nodes = @Html.Raw(Json.Encode(Model))
</script>

var节点=@Html.Raw(Json.Encode(模型))

var nodes=@Html.Raw(Json.Encode(ViewBag.Users))
(请注意,如果您希望在javascript对象中使用小写形式,则您的属性名称需要小写)。我建议您发出ajax请求,并将这些用户作为Json对象。谢谢。它对我有用。但使用ViewBag的原因是,我不仅需要js代码中的用户列表,还应该添加一个解释,说明所显示的代码如何回答这个问题。看看其他答案,从中可以得到一些关于如何做到这一点的启示。
<script>
var nodes = @Html.Raw(Json.Encode(Model))
</script>
var nodes= JSON.stringify(@Html.Raw(Json.Encode(ViewBag.Users)));