我有按钮,当它点击了进程事件并且参数传递给事件时。
这里是代码:
<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)'
我收到此错误:
名称&#39; actionName&#39;在当前上下文中不存在
我知道为什么会出现上述错误?
如何解决?
答案 0 :(得分:1)
请记住,在执行客户端代码之前,服务器上会执行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
});
}
答案 1 :(得分:1)
<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
});
}
答案 2 :(得分:-1)
引号之间输入的所有内容都被解析为纯文本,因此不会对检索actionName的值执行任何计算。
你必须像这样打破你的网址:
url:'@ Url.Action('+ actionName +')'
以便actionName被解析为变量。