通过JavaScript中的IEnumerable模型进行迭代

时间:2012-04-02 16:28:07

标签: javascript asp.net-mvc asp.net-mvc-3 razor ienumerable

我有 IEnumerable <> Car(在这里它不会让我使用尖括号)我的视图中使用的模型: 在我的JavaScript中,我必须创建一个对应于我的模型中的对象的对象数组。我无法在JavaScript中迭代我的模型 如果我使用剃须刀,则javascript代码无效

<script type="text/javascript">

var carsArray = new Array();     

@foreach (var item in Model)
{
    //add the and item to carsArray object
}

//OR
for(i=0;i<@Model.Count();i++)
{
    alert(@Model.ElementAt(i).Title);

//错误:当前上下文中不存在名称“i”

 //add to array

}

</script>

谢谢!

3 个答案:

答案 0 :(得分:4)

您是否尝试将内容包装在<text>代码中?

var carsArray = new Array();     

@foreach (var item in Model)
{
    <text>carsArray.push("@item.Property")</text>
}

答案 1 :(得分:3)

您正在混合服务器端和客户端代码。

如果你想在服务器上吐出客户端代码,你可以。

但最好是将您的模型数据序列化为JSON并将其放在客户端上。


粗略的例子:

更新

@{
   var js = new JavaScriptSerializer();
}

myJavascriptObject.Models = @js.Serialize(myModels);

答案 2 :(得分:0)

另一种方法是将服务器模型转换为 javascript,然后对其进行迭代。

你可以像这样转换它:

var model = @Html.Raw(Json.Encode(Model));

这个方法对我有用。来自另一个 stackoverflow 答案的解决方案:

Accessing MVC's model property from Javascript