javascript - 如何使用 Action razor 语法在 ajax url 中使用 var

标签 javascript ajax asp.net-mvc razor

我有一个通过 Action URL 调用 Controller 中方法的函数,但我需要使用像方法名称这样的参数,但以这种方式这是不可能的。

function changeDropDownList(id, dropNameToChange, actionName, descriptionName) {

    var control = $('#'+dropNameToChange);
    control.prop("disabled", false);

    $.ajax({
        //Here I need use the actionName var, but only accept a string
        url: '@Url.Action(actionName, "ThirdPartiesDef")',
        dataType: "JSON",
        data: { id: id },
        contentType: "application/json; charset=utf-8",
        success: function (result) {
            control.empty();
            $.each(result, function (index, item) {
                control.append(
                    $('<option/>', {
                        value: item.Id,
                        text: item[descriptionName]
                    })
                );
            });
        },
        error: function (error) {
            alert("Error: " + error);
        }
    });
}

我对ajax不太了解,如果你能告诉我一些更简单的方法,那就没问题了。

感谢您的帮助

最佳答案

您可以在 Url.Action 服务器端 Razor 函数中使用占位符,该函数将被您的 javascript actionName 变量替换 在客户端:

url: '@Url.Action("#THE-ACTION#", "ThirdPartiesDef")'.replace('#THE-ACTION#', actionName)

基本上会在客户端的浏览器内发出以下标记:

url: '/#THE-ACTION#/ThirdPartiesDef/'.replace('#THE-ACTION#', actionName)

在客户端调用 changeDropDownList javascript 函数后,它将用 actionName javascript 变量替换占位符,最终您将获得可用于您的AJAX 调用。

作为旁注,您应该从 AJAX 调用中删除 contentType: "application/json; charset=utf-8" 参数,因为您根本没有在 中发送任何 JSON data 参数。

关于javascript - 如何使用 Action razor 语法在 ajax url 中使用 var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41877350/

相关文章:

javascript - 从同一页面调用两个按钮不起作用

c# - 将字符串转换为 long 类型并在 asp.net MVC 中的 linq 查询中使用

javascript - 如何在动态生成的 input-angularjs 中显示动态 Json 数据?

javascript - 手动触发窗口对象上的事件

asp.net - 如何向 Ajax.ActionLink 插入内容

javascript - Rails 2.3.11 中未出现 CSV 下载框

javascript - onmouseover 在 Firefox 中有效,但在 chrome 或 safari 中无效

javascript - 扩展 Twitter Bootstrap 的模态插件

javascript - AJAX 中的 XMLHttpRequest 变量如何工作?它的工作原理是什么?

c# - ASP.NET MVC 5.1 EditorFor 和 DisplayFor 不使用自定义模板