【问题标题】: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。