使用MVC Razor将javascript放在外部文件中(动态)

时间:2017-05-02 13:39:07

标签: javascript asp.net-mvc razor

一个例子是解释这一个的最简单方法。我正在处理实际页面上<script>标记内有大量javascript的代码。我通常喜欢将javascript放在外部文件中(当你在许多页面中找到共同点时,它更适合重构)。困难在于代码如果充满了动态函数名,类名和id ......就像这样:

 function handlePosData@(mySuffix)(data) {
        $('#myDiv@(mySuffix)').css('cursor', 'auto');
        if (data && data.length > 0) {
            $('#lstPos@(mySuffix)').data('kendoGrid').dataSource.data(data);
        }
    }

mySuffix是在Razor代码顶部生成的GUID

(我对这个代码库来说是全新的,所以不要问我为什么会这样。这个网络应用可以同时打开许多不同的弹出窗口,我假设这是一个需要确保的解决方案独特的名字......)

任何想法如何启用相同的方案,但使用外部JavaScript文件?

1 个答案:

答案 0 :(得分:1)

我认为这些函数是从你的剃刀页面调用的(而不是外部的js文件)。如果是这样,您可以执行以下操作:

更改函数以使其成为标准函数,而不是直接在函数中使用剃刀,使用js变量:

// this can be moved to external js
function handlePosData(data, mySuffix) { // pass in mySuffix to function so it is a js var
  $('#myDiv' + mySuffix).css('cursor', 'auto');
  if (data && data.length > 0) {
    $('#lstPos' + mySuffix).data('kendoGrid').dataSource.data(data);
  }
}

然后在你的剃刀代码中,你只需要调用这个函数:

handlePosData(data, '@(mySuffix)'); // not sure what your data is so just left that as a var that you pass in