在互联网上,我在JS中找到了许多代码示例:
window.location.href = "@Url.Action('Index', 'Home')";
人们在javascript代码中使用HTML帮助程序,例如,请参阅that。 但是当我想要这样做时,我会得到一个简单的字符串:
http://localhost:28832/@Url.Action('Index',%20'Home')
为什么我的HTML帮助程序没有被处理?
答案 0 :(得分:3)
剃刀语法适用于视图。如果您的JS代码嵌入在视图中,它将起作用。如果您在外部文件中包含JS代码,请不要期望它能够正常工作。
如果您考虑如何为js文件提供服务,那么razor引擎永远不会处理它们,它们只是资源。我不知道是否有办法为剃须刀引擎添加js支持。
我使用此解决方法: 当我在JS文件上需要一些动态(剃刀)内容时,我所做的是声明一个函数并将内容作为函数的参数。然后我从视图文件中调用该函数并将razor语句作为参数传递。在你的情况下,这可能是这样的:
JS档案:
function foo(link){
window.location.href = link;
}
查看文件
<script>
foo("@Url.Action('Index', 'Home')");
</script>
修改强> This link提供的Maxwell Troy Milton King指向一个有很好答案的类似问题,如果此解决方案不够,请尝试一下。