代码之家  ›  专栏  ›  技术社区  ›  Kieron

在外部javascript文件中处理ASP.NET表达式

  •  0
  • Kieron  · 技术社区  · 16 年前

    使用的最佳实践是什么 ASP.NET expressions 在外部javascript文件中?

    我目前正在使用ASP.NET MVC框架,需要在外部JS引用中执行类似以下操作:

    jQuery(document).ready (function () {
        jQuery ("#element<%= Model.IdFromAThing %>").click (... blah ...
    });
    

    能够 把这个移到视图中,当然,但我想把它分开。

    附笔。

    这样做的好处之一是我可以在许多地方重复使用相同的JS文件,我不想在每个视图中重复初始化逻辑(考虑到它是相同的)。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Jim W    16 年前

    我认为这是不可能的,除非你将你的IIS改为以ASP.NET的形式处理.js文件。

    外部JS文件不是由ASP.NET处理的,它们只是发送到Web客户端。因此,在.js文件中不能使用ASP.NET表达式,除非您弄乱了IIS配置并将其更改为像处理ASP.NET文件一样处理.js文件。

    另一方面,可以将.js文件重命名为.aspx,然后将其用作JSSRC值。然后,在将其发送到客户端之前,将使用ASP.NET进行处理。您只需要确保输出中没有自动生成的HTML代码(只有javascript)。

        2
  •  1
  •   Funka    16 年前

    Jim是正确的,要让JS文件包含动态内容,您需要ASP.NET引擎来分析/处理这些内容。

    另一个想法是稍微重构你正在做的事情。创建JS文件以接受动态页面中的(动态)参数,这些参数可以被注入。例如,您的示例可能重写如下:

    在静态JS文件中:

    function setItUp(idFromAThing) {
        jQuery(document).ready (function () {
            jQuery ("#element" + idFromAThing).click (... blah ...
        });
    }
    

    在您的ASP.NET视图中:

    <script type="text/javascript" src="whatever.js"> </script>
    <script type="text/javascript">
    setItUp(<%= Model.IdFromAThing %>);
    </script>
    

    祝你好运!

    推荐文章