JS中的Url.Action无法正常工作

时间:2014-07-12 21:25:18

标签: c# javascript asp.net razor

在互联网上,我在JS中找到了许多代码示例:

window.location.href = "@Url.Action('Index', 'Home')";

人们在javascript代码中使用HTML帮助程序,例如,请参阅that。 但是当我想要这样做时,我会得到一个简单的字符串:

http://localhost:28832/@Url.Action('Index',%20'Home')

为什么我的HTML帮助程序没有被处理?

1 个答案:

答案 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指向一个有很好答案的类似问题,如果此解决方案不够,请尝试一下。