名称参数在 JQUERY 方法的当前上下文中不存在

The name parametor does not exist in the current context in JQUERY method

本文关键字:上下文 不存在 方法 参数 JQUERY      更新时间:2023-09-26

我有按钮,当它单击时,进程事件已被调用,参数传递给事件。

这里的代码:

<input type="button" value="Accessing Layers" onclick="process('AccessingLayers');" />
 function process(actionName) {
        $.ajax({
            url: '@Url.Action(actionName)',
            type: 'POST',
            data: {
                sessionID: parent.parent.mapFrame.sessionId,
                mapName: parent.parent.mapFrame.mapName
            },
            success: function (result) {
                alert('Successfully passed data to controller');
            }
        });
    }

但在这一行中:

url: '@Url.Action(actionName)'

我收到此错误:

名称"操作名称"在当前上下文中不存在

知道为什么我得到上面的错误吗?

以及如何解决它?

请记住,

在执行客户端代码之前,razor 代码在服务器上执行。所以你不能把javascript变量传递给这样的剃刀方法。

如果你仍然想使用 Url.Action 帮助程序方法构建 url 并将其传递给你的进程方法,你应该使用正确的参数(操作方法、控制器名称等)调用 Url.Action 方法并生成 url 并将 url( 由 razor 生成)作为字符串参数值传递给你的 javascript 方法

<input type="button" value="Accessing Layers" 
                           onclick="process('@Url.Action("AccessingLayers")')" />

和你的 js 代码

function process(actionUrl) {
        $.ajax({
            url: actionUrl,
            // existing code
        });
}
<input type="button" value="Accessing Layers" id="btnAccessingLayers" />

和在脚本部分

        $(document).ready(function () {
           $('#btnAccessingLayers').on('click', function(){
                process('@Url.Action("AccessingLayers")');
                }
        });
        function process(actionUrl) {
        $.ajax({
            url: actionUrl,
            // existing code
        });
}

引号之间键入的所有内容都解析为纯文本,因此不会对检索 actionName 的值执行计算。

你必须像这样打破你的网址:

网址: '@Url.Action('+actionName+')'

以便将操作名称解析为变量。