为什么将代码从html移动到.js会导致问题?

时间:2013-11-09 16:28:29

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

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

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

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

3 个答案:

答案 0 :(得分:3)

ASP.net不会解析Javascript文件,因此永远不会处理@ Html.Raw和@ Url.Action(“Load”)的变量。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

ASP.NET MVC不会解析Javascript文件,因此@Html.Raw(@Url.Action("Load"))将无法在javascript文件中运行。

继承人解决方法

而是在view.cshtml中声明变量。在脚本部分中

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

在javascript文件中使用actionUrl