如果我的观点模型是
@model List<myModel>
我可以在javascript
中执行以下操作吗?<script>
var someint = 0;
var modelValue = @Model[someint].myValue;
</script>
答案 0 :(得分:3)
您的客户端代码无法理解@model
作为服务器端代码。
或者,您可以通过执行
将整个服务器端模型转换为JS对象var model = @Html.Raw(Json.Encode(Model));
或者,如果您只想要特定属性值,那么只需执行
var modelValue = @Html.Raw(Json.Encode(Model.myValue));
如果您Model
是一个集合,那么您可以使用顺序for循环迭代您的模型集合,如
<script type="text/javascript">
var model = @Html.Raw(Json.Encode(Model));
for (var i = 0; i < model.length; i++) {
alert(model[i].myValue);
// Do Something
}
</script>
答案 1 :(得分:1)
您可以在javascript中访问您的模型,但您需要引用剃刀代码
@model List<myModel>
<script>
var modelValue = "@Model[0].myValue"; // add quotes
</script>
然而你不能组合剃刀和javascript变量,所以以下不起作用(someint
是一个javascript变量)
<script>
var someint = 0;
var modelValue = "@Model[someint].myValue";
</script>
但以下将
@{ var someint = 0; } // declared in razor
<script>
var modelValue = @Model[someint].myValue;
</script>
答案 2 :(得分:1)
您可以通过函数说明将模型的值传递给Javascript:
<img src="image" onclick="myFunction(@Model[i].property)">
使用Javascript:
function myFunction(item)
{
//dosomething
}
答案 3 :(得分:0)
你可以这样做:
var percent = @Model.TankLevel; //TankLevel is Int within model of model
var cap = @Model.TankCapacity; //TankCapacity is an Int within my model also
percent=(percent/cap).toFixed(2);
只要
从本质上讲,它取决于你使用变量 modelValue 做什么。
再次阅读您的问题后,您似乎正试图几乎访问“&#39;”列表&#39;就像使用索引的数组一样,这是一个明确的 no no 。