Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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
Asp.net mvc 3 可以在Javascript文件中使用razor语法吗?_Asp.net Mvc 3_Razor - Fatal编程技术网

Asp.net mvc 3 可以在Javascript文件中使用razor语法吗?

Asp.net mvc 3 可以在Javascript文件中使用razor语法吗?,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我想在Javascript文件中使用razor语法。这是否可能在不将javascript内联到页面中的情况下实现?Razor引擎只针对页面运行,而不针对任何包含的javascript文件 您可以编写一个自定义解析器,在为任何javascript文件提供服务之前对其运行视图引擎,我认为任何这样做的尝试都将是一个非常有用的开源项目 然而,想到的最简单的解决方案(如果这些变量没有语义链接到任何DOM元素)是在页面(或包含的部分页面)中简单地声明和初始化变量,而javascript(在.js文件中)依赖

我想在Javascript文件中使用razor语法。这是否可能在不将javascript内联到页面中的情况下实现?

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

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

然而,想到的最简单的解决方案(如果这些变量没有语义链接到任何DOM元素)是在页面(或包含的部分页面)中简单地声明和初始化变量,而javascript(在
.js
文件中)依赖于定义的这些变量

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

HTML:


我在nuget上发现了一个razor引擎,它在
js
文件中解决了
@

包裹


查看更多问题

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

+1…或者,您可以将所需的值传递到querystring中的JS文件。为什么您需要在javascript文件中使用Razor?您需要实现哪些更具体的目标?我打赌有更好的方法来实现它。@DarinDimitrov的可能重复:我只需要在我的ajax请求中使用Url.Action()。@gdoron:我在搜索时找不到那个。我将加入你的投票结束。
<div data-auto-refresh="pathToContent" data-auto-refresh-milliseconds="1000"></div>
$(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 ...
  });
});