17

我在这里问了一个类似的问题并Darin Dimitrov回答说我们不能像$.ajax({ url: '@Url.Action("Index")', . . .在单独的 js 文件中那样使用 Url 帮助器,那么你有什么建议在视图页面中使用 Url 帮助器并将其传递给 javascript,我不想使用硬代码 url,我需要用 Url helper 找到它。?

4

6 回答 6

32

使用隐藏字段来存储您的网址,然后使用 javascript 读取隐藏字段,然后在您的代码中使用它。这样您就可以将 JS 文件与视图分开。像这样的东西:

//In Your View
    @Html.Hidden("MyURL", Url.Action("Index"))

//In Your JS
    var myUrl = $("#MyURL").val();

    $.ajax({ url: myUrl , . . .
于 2012-03-29T08:55:30.597 回答
8

最简单的方法是创建一个名为 something 的全局变量,然后在外部 JS 中引用它

var baseURL = '@Url.Action("Index")';

在你的外部 JS 里面

$.ajax({ url: baseURL + "Action"
于 2012-03-29T08:55:22.737 回答
5

您可以为此目的使用RazorJS。它允许在 JavaScript 文件中编写 Razor 风格的 C# 或 VB.NET。这里有一个简短的描述。

于 2012-03-29T09:02:08.013 回答
2

不需要隐藏字段,即使这在外部 .js 文件中也有效。

var myUrl = /ControllerName/ActionName;

$.ajax({ url: myUrl , . . 
于 2014-12-07T08:31:38.363 回答
0

查看使用部分 Razor 视图生成外部 JavaScript 文件。在这篇博文中,我描述了如何使用常规 Razor 视图和自定义操作过滤器来呈现可以包含 Razor 代码的外部 JavaScript 文件。

于 2013-07-11T09:12:08.997 回答
0

我对 raklos 使用了类似的方法,但希望在所有地方都获得根目录路径,所以我使用了下面的代码。

@Html.Hidden("AppUrl", Url.Content("~"))
于 2016-01-11T15:20:55.340 回答