.JS文件在Ajax Url中使用@ url.action

时间:2017-10-09 06:13:26

标签: .net asp.net-mvc-4

我一直在尝试在另一个外部@Url.Action文件中使用Ajax url中的.JS,但遗憾的是我没有运气。

这是我的代码:

 $.ajax({
      type: 'post',
      url: "@Url.Action("ClearData","Home")",
      success: function () {

       }
     });

此代码仅在视图本身内部工作,但不在Javascript externally中工作。 我已经搜索了一些可能的解决方案,但它似乎与此不同。

是否有其他方法可以在另一个@Url.Action文件中使用.Js

3 个答案:

答案 0 :(得分:2)

@Url.Action()是razor(服务器端)代码,不在外部文件中解析。选项包括

在主文件中声明一个全局变量,比如说

var url = @Url.Action("ClearData","Home");

然后在外部脚本中使用ajax调用中的url: url

在您处理的元素中包含data-属性,例如,如果是按钮点击事件,则

<button data-url="@Url.Action("ClearData","Home")" id="mybutton">

然后在外部文件中读取该值,例如

$('#mybutton').click(function() {
    var url = $(this).data('url');
    $.ajax({
        url: url,
        ....

答案 1 :(得分:0)

如果您的js代码在视图内

$.ajax({
      type: 'post',
      url: "@Url.Action("ClearData","Home")",
      success: function () {

       }
     });

这是工作

当js代码是单独的(外部文件)时 @Url.Action("ClearData","Home")不起作用, 在这种情况下,您必须写出总的URL或文件夹路径

答案 2 :(得分:0)

您可以创建局部视图,然后在该视图内部只是隐藏字段的列表 例如

(flatten (conj

生成此

@Html.Hidden("ActionName", @Url.Action("ActionName", "Controller"))

然后您可以这样称呼

<input id="ActionName" name="ActionName" type="hidden" value="/controller/ActionName">

或者您可以像我一样创建一个js函数

  var urlAction = $('#ActioName').val();