如何在 ajax url 中使用带有操作 razor 语法的 var



>我有一个通过操作 URL 调用控制器中方法的函数,但我需要使用像 Method name 这样的参数,但这是不可能的。

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 调用的正确 URL。

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

你必须

使用JSON.stringify()方法。

JSON.stringify()方法将javascript对象转换为json文本并将其存储在string中。

您指定了contentType: "application/json; charset=utf-8",server等待以json格式receive数据。

另外,您使用了错误的@Url.操作:@Url.Action(actionName, "ThirdPartiesDef")',

一种解决方案是使用.replace函数:

'@Url.Action("myAction", "ThirdPartiesDef")'.replace('myAction', actionName) .

在 Razor

中,每个使用 @ 块的内容都会由 Razor 自动进行 HTML 编码。

相关内容

最新更新