【问题标题】:How do I use Razor values in a javascript function? [duplicate]如何在 javascript 函数中使用 Razor 值? [复制]
【发布时间】:2012-09-03 18:08:36
【问题描述】:

可能重复:
using razor within javascript

我想将模型中的一个简单值放在剃须刀页面上,并将其用作 javascript 函数中的常量值。即

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

这样 myValue = 我模型中的记录数。我以 myRecord.Count 为例,它可以是我模型中的任何值。

这可能吗?

TIA J

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

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

只需放入额外的括号即可。

【问题讨论】:

  • 是的,这是可能的。您是否遇到任何错误?
  • 该代码应该可以工作。错误是什么?

标签: javascript asp.net-mvc razor


【解决方案1】:

确保这是在 Razor 文件中:

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

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

【讨论】:

  • int 可能没问题,但其他数据类型会失败。
【解决方案2】:

当然,只要确保正确编码即可。例如,您可以对整个模型本身进行 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>

或:

alert(model[2].Foo.Bar);

或其他。

但是如果你只关心模型内部的元素数量(如果这个模型代表一个集合):

var count = @Html.Raw(Json.Encode(Model.Count()));
alert(count);

【讨论】:

  • 解决了我的问题,我不得不将编码更改为序列化:@Html.Raw(Json.Serialize(Model.data)),完美,谢谢
  • 顺便说一句,这仅在您将 JS 嵌入到 .cshtml 文件中时才有效。答案可以更清楚地说明这一点。
  • 这很有帮助,谢谢!
猜你喜欢
  • 2013-06-02
  • 2019-04-04
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
  • 2013-02-02
  • 2017-10-17
  • 1970-01-01
  • 2014-08-02
相关资源
最近更新 更多