【问题标题】:Is it possible to use razor syntax in Javascript files?是否可以在 Javascript 文件中使用剃刀语法?
【发布时间】:2012-02-19 11:02:59
【问题描述】:

我想在我的 Javascript 文件中使用 razor 语法。如果不将 javascript 内联到页面中,这可能吗?

【问题讨论】:

  • 为什么需要在 javascript 文件中使用 Razor?您需要更具体地实现什么?我敢打赌有更好的方法来实现它。
  • @DarinDimitrov :我只需要在我的 ajax 请求中使用 Url.Action()。
  • @gdoron:我在搜索时找不到那个。我会添加到您的投票结束。

标签: asp.net-mvc-3 razor


【解决方案1】:

我在 nuget 上找到了一个剃须刀引擎 RazorJS,它解决了 js 文件中的 @
The owner blog and explanations about the package abilities
Nuget

this问题中查看更多信息

【讨论】:

    【解决方案2】:

    Razor 引擎仅针对页面运行,而不针对任何包含的 javascript 文件运行。

    您可以编写一个自定义解析器,在提供任何 javascript 文件之前运行视图引擎,我想任何尝试这样做都会是一个非常有用的开源项目。

    然而,想到的最简单的解决方案(如果这些变量没有与任何 DOM 元素进行语义链接)是简单地在页面(或包含的部分页面)和您的 javascript(在 @ 987654321@ files) 依赖于这些被定义的变量。

    但是,如果您需要的变量在逻辑上与 DOM 元素相关联,我更喜欢使用 data-* 属性来定义这些,这样您的 javascript 可以被 html 使用,而不是相反。例如,如果您有一个应该由 javascript 自动更新的内容区域(此处以 jQuery 为例):

    HTML:

    <div data-auto-refresh="pathToContent" data-auto-refresh-milliseconds="1000"></div>
    

    Javascript:

    $(function() {
      $('[data-auto-refresh]').each(function() {
        var self = $(this);
        var url = self.data('auto-refresh');
        var interval = self.data('auto-refresh-milliseconds');
        // Code to handle refresh here ...
      });
    });
    

    【讨论】:

    • +1 ...或者您可以在查询字符串中将所需的值传递给您的 JS 文件。
    【解决方案3】:

    您可以在您的 cshtml 文件中的隐藏字段中设置值,然后在您的 javascript 文件中您可以访问隐藏字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      相关资源
      最近更新 更多