c# - JS 中的 Url.Action 不起作用

标签 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 助手没有被处理?

最佳答案

Razor 语法适用于 View 。如果你的 JS 代码嵌入到 View 中,它就会工作。如果您的 JS 代码位于外部文件中,则不要指望它能够工作。

如果您考虑一下 js 文件是如何提供的,razor 引擎永远不会处理它们,它们只是资源。不知道有没有办法给razor引擎添加js支持。

我使用这个解决方法: 当我需要 JS 文件上的一些动态( Razor )内容时,我所做的就是声明一个函数并将内容作为该函数的参数。然后我从 View 文件调用该函数并将 razor 语句作为参数传递。在你的情况下,这可能是这样的:

JS 文件:

function foo(link){
    window.location.href = link;
}

查看文件

<script>
    foo("@Url.Action('Index', 'Home')");
</script>

编辑: This linkMaxwell Troy Milton King提供指向一个类似的问题,它有很好的答案,如果这个解决方案还不够,请尝试一下。

关于c# - JS 中的 Url.Action 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24717467/

相关文章:

javascript - UpdatePanel 忽略内联脚本标记

c# - 使用 System.Data.Sqlite 进行 Sqlite 在线备份

c# - 无法通过我的 C# 代码连接到安全的 phpmyadmin

javascript - jQuery 动画背景位置不会改变但 css 会

javascript - 验证文本框并运行另一个函数 javascript

c# - 在 asp .net 中从动态创建的控件标签中检索值

c# - 调试:Microsoft JScript 运行时错误

c# - 在 ASP.NET 事件处理程序中使用 async/await 是否安全?

javascript - 访问通过 wrap 函数添加的父项

javascript - 在javascript中传递两个值