2013-06-30 77 views
1

我们正在处理的项目中存在一些问题,我们有很多JavaScript文件,我们在其中编写了硬编码的URL到控制器操作。使用ASP.NET MVC摆脱JavaScript中的硬编码字符串

  1. 硬式编码的网址是proned以打错在JavaScript脚本
  2. 硬编码的网址会导致破损,如果相关的控制器或动作的名称,改为
  3. 工具,比如ReSharper的(据我所知)不能静态地分析它的如果指向它的URL是硬编码的,则表示不使用该操作的方式。

问题(S)

我们怎样才能避免在JavaScript中使用硬编码的网址吗? - 有没有可以解决这个问题的现有框架?

期待听到您的洞察。

谢谢。

回答

1

在你的情况下,你需要使用url助手将URL从视图传递给js代码文件。 修改您的js文件以使用模块模式之一。

第一种方式 - 进口全局变量:

JS

(function (url) { 
    // your code 
}(external_url)); 

视图

<script type="text/javascript"> 
    var external_url = '@Url.Action("action", "controller")'; // define global variable `external_url` with helper. This should be defined before script run. 
</script> 
<script type="text/javascript" src="jsfile.js" /> 

方式二 - 输出模块:

var module = (function (url) { 
    // your code 
}(external_url)); 

视图

<script type="text/javascript" src="jsfile.js" /> 
<script type="text/javascript"> 
    module('@Url.Action("action", "controller")'); 
</script>