javascript - 使用 ASP.NET MVC 摆脱 JavaScript 中的硬编码字符串

标签 javascript asp.net-mvc hardcoded magic-string

在我正在处理的一个项目中,我们遇到了一些问题,我们有很多 JavaScript 文件,我们有硬编码的 URL 到 Controller 操作。

  1. 硬编码 URL 容易出现错误
  2. 如果更改相关 Controller 或操作的名称,JavaScript 脚本中的硬编码 URL 将导致中断
  3. ReSharper 之类的工具(据我所知)无法静态分析表示未使用操作的方式,如果指向它的 URL 是硬编码的话。

问题

我们如何避免在 JavaScript 中使用硬编码的 URL? - 是否有任何现有框架可以解决这个问题?

期待听到您的见解。

谢谢。

最佳答案

在您的情况下,您需要使用 url 帮助程序将 url 从 View 传递到 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>

关于javascript - 使用 ASP.NET MVC 摆脱 JavaScript 中的硬编码字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17394880/

相关文章:

javascript - jquery 向这个被点击的元素添加类

javascript - jQuery 按钮一次验证表单的一部分

css - bootstrap-modal 两个实例

java - Android (Java) : Parse. com 没有订阅不是硬编码字符串的 channel ?

javascript - 如何创建基于以 "_"开头的属性名称将所有类属性设置为不可枚举的 Typescript 装饰器?

javascript - 使用 RhinoMock 或 Moq 测试方法的内部结构

c# - 使用操作过滤器修改操作内的值

asp.net-mvc - VB.NET 中的 ASP.NET MVC 4 HtmlHelper 扩展需要 App_Code 吗?

javascript - 为什么 Node.js 中的事件不使用常量?

java - 将跨多个类的硬编码变量重构为一个全局变量?