【问题标题】:Url.Action in JS don't workJS 中的 Url.Action 不起作用
【发布时间】:2014-09-03 05:51:30
【问题描述】:

在网上我发现了很多这样的 JS 代码示例:

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

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

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

为什么我的 HTML 助手没有被处理?

【问题讨论】:

  • 您需要通过 razor 引擎获取您的 JS 文件
  • 我用 bindle 得到它是这样的:@Scripts.Render("~/bundles/Account/Register") 你是这个意思吗?
  • 我的意思是这样的:stackoverflow.com/questions/7902213/…

标签: c# javascript asp.net razor


【解决方案1】:

剃刀语法适用于视图。如果您的 JS 代码嵌入在视图中,它将起作用。如果您将 JS 代码放在外部文件中,请不要指望它会起作用。

如果您考虑如何为 js 文件提供服务,那么剃须刀引擎从不处理它们,它们只是资源。不知道有没有办法给razor引擎添加js支持。

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

JS 文件:

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

查看文件

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

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

【讨论】:

  • 好的,但是是否有任何 JS 库可以获得类似的机会,或者我必须自己纠正它?
  • @RustamSalahutdinov 我不知道如何在外部文件上存档该行为。我所做的是在外部声明函数,但在视图文件中调用带有剃须刀语句的参数
猜你喜欢
  • 1970-01-01
  • 2017-09-20
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
  • 2012-11-21
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多