【问题标题】:Why moving the code from html into .js causes issue?为什么将代码从 html 移动到 .js 会导致问题?
【发布时间】:2013-11-09 16:28:28
【问题描述】:

我有一个带有 knockout.js 的 asp.net mvc 项目,所以我的索引页面变得非常庞大,因为有很多 javascript 功能。 我很想将 js 代码移动到一个单独的文件中,但它不允许我将其应用于大部分代码,因为如果我有类似

的东西
$.ajax({
    url: "@Html.Raw(@Url.Action("Load"))",

然后如果我将这部分代码移动到另一个文件中,它会弹出一个错误。 请告知我该如何解决这个问题?

【问题讨论】:

    标签: asp.net-mvc jquery knockout.js html-helper


    【解决方案1】:

    ASP.net 不解析 JavaScript 文件,因此您拥有的 @Html.Raw 和 @Url.Action("Load") 变量将永远不会被处理。

    【讨论】:

      【解决方案2】:

      正如@James Lai 所指出的,服务器端 代码不会被 ASP.Net 解析为这样。有关解决方法,请参阅 this post,或者您可以选择哪些脚本仍可以保留在页面上(使用服务器端代码)而不是“一切”——您可以选择哪种方法满足您的要求。

      【讨论】:

        【解决方案3】:

        Javascript 文件不被 ASP.NET MVC 解析,因此@Html.Raw(@Url.Action("Load")) 在 javascript 文件中不起作用。

        这是解决方法

        改为在view.cshtml 中声明一个变量。在脚本部分作为

        <script type="text/javascript">
             var actionUrl = '@Url.Action("Load", "Controller")';
        </script>
        

        并在 javascript 文件中使用actionUrl

        【讨论】:

          猜你喜欢
          • 2019-07-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-20
          • 1970-01-01
          • 2021-04-30
          相关资源
          最近更新 更多