我有一个通过 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/