如何在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);