Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.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函数中使用Razor值?_Javascript_Asp.net Mvc_Razor - Fatal编程技术网

如何在javascript函数中使用Razor值?

如何在javascript函数中使用Razor值?,javascript,asp.net-mvc,razor,Javascript,Asp.net Mvc,Razor,可能重复: 我想将模型中的一个siimple值放在razor页面上,并将其用作javascript函数中的常量值。i、 e <script> var myValue = @Model.myRecord.Count();</script> var myValue=@Model.myRecord.Count(); 因此myValue=我的模型中的记录计数。我使用myRecord.Count作为示例,它可以是我模型中的任何值 这可能吗 短暂性脑缺血发作 J 好的,我偶然发

可能重复:

我想将模型中的一个siimple值放在razor页面上,并将其用作javascript函数中的常量值。i、 e

<script> var myValue = @Model.myRecord.Count();</script>
var myValue=@Model.myRecord.Count();
因此myValue=我的模型中的记录计数。我使用myRecord.Count作为示例,它可以是我模型中的任何值

这可能吗

短暂性脑缺血发作 J

好的,我偶然发现了以下解决方案:

<script> var myValue = @(Model.myRecord.Count())</script>
var myValue=@(Model.myRecord.Count())

只需添加额外的括号就可以了。

确保这是一个Razor文件:

<script> var myValue = @Model.myRecord.Count();</script>
var myValue=@Model.myRecord.Count();

如果它只是一个js文件,Razor引擎根本不会运行该代码。

当然,只要确保正确编码即可。例如,您可以对整个模型本身进行JSON编码:

@model IEnumerable<MyViewModel>
<script type="text/javascript">
    var model = @Html.Raw(Json.Encode(Model));
    // at this stage the model javascript variable represents the JSON encoded
    // value of your server side model so that you can access all it's properties:
    alert(model.length);
</script>
或者别的什么

但如果您只关心模型内的元素数量(如果此模型表示集合):


是的,这是可能的。您是否面临任何错误?该代码应该可以工作。错误是什么?int可能还可以,但其他数据类型会失败。解决了我的问题,我不得不将Encode改为Serialize:@Html.Raw(Json.Serialize(Model.data)),非常好用,谢谢。顺便说一句,只有将JS嵌入到.cshtml文件中,这才有效。答案可能会更清楚。
alert(model[2].Foo.Bar);
var count = @Html.Raw(Json.Encode(Model.Count()));
alert(count);