Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ASP.Net中带有参数的Javascript调用C#方法_C#_Javascript_Asp.net - Fatal编程技术网

使用ASP.Net中带有参数的Javascript调用C#方法

使用ASP.Net中带有参数的Javascript调用C#方法,c#,javascript,asp.net,C#,Javascript,Asp.net,有人能帮我在aspx页面中使用Javascript和参数在代码隐藏中调用C#方法吗 下面是调用sample()方法的javascript: 这给了我一个Javascript代码错误: arr在当前上下文中不存在 顺便说一下,当单击图表中的某个特定条时,将执行javascript。我使用fusioncharts 下面是关于如何调用参数并将其传递给ShowModal javascript函数的代码: xmlString.AppendFormat("<set label='{3}' value=

有人能帮我在aspx页面中使用Javascript和参数在代码隐藏中调用C#方法吗

下面是调用sample()方法的javascript:

这给了我一个Javascript代码错误:

arr在当前上下文中不存在

顺便说一下,当单击图表中的某个特定条时,将执行javascript。我使用fusioncharts

下面是关于如何调用参数并将其传递给ShowModal javascript函数的代码:

xmlString.AppendFormat("<set label='{3}' value='{1}' tooltext='Employee: {0}{2}Hours:{1}' link='j-showModal-{1}, {1}'/>", dt.Rows[i][1].ToString(), dt.Rows[i][2].ToString(), "{br}", dt.Rows[i]["EmpNameDot"].ToString()); 
xmlString.AppendFormat(“,dt.Rows[i][1]。ToString(),dt.Rows[i][2]。ToString(),“{br}”,dt.Rows[i][“EmpNameDot”].ToString());

您不能将客户端代码和服务器端代码这样混用。请求页面时,服务器端代码在服务器上运行。当时它不知道任何客户端事件或信息

为什么要在服务器端代码中执行此操作?您所做的只是在页面元素上设置一些文本。只需使用JavaScript就可以了,这样就不必回发到服务器。大概是这样的:

function showModal(arr, hey) {
    document.getElementById('lblsample').textContent = arr + ',' + hey;
}
请注意,这假定HTML中的客户端
id
值为
lblsample
。情况可能并非如此。您必须实际检查HTML并进行检查。不过,有一种变通方法可以让服务器端代码有所帮助。您可以嵌入一些服务器端代码,以便在页面加载时运行一次,这将为该元素发出客户端
id

function showModal(arr, hey) {
    document.getElementById('<%=lblsample.ClientID%>').textContent = arr + ',' + hey;
}
函数showmodel(arr,hey){
document.getElementById(“”).textContent=arr+,“+hey;
}

扩展David的答案: 呈现页面后,有许多方法可以从客户端访问服务器端。部分列表,无特定顺序:

  • WebMethod
  • UpdatePanel
  • ASMX
    web服务
  • WCF
    web服务
  • webapi
  • 信号机
你选择哪一个取决于你想要达到的目标。在任何情况下,您都需要发出
AJAX
请求(使用
jQuery
)并在
JavaScript
代码中处理返回值。您似乎正在使用
WebForms
UpdatePanel
WebForms
-ish的方法。
UpdatePanel
为您处理ajax调用,您只需正确设置它


编辑:如果您在编辑问题时更好地解释了您真正想要实现的目标,也许我可以提供一个更有效的答案。

这是对客户端代码和服务器端代码之间差异的典型误解。JavaScript可能会在UI中的某个事件之后执行,但嵌入其中的C#代码会在服务器上的页面加载过程中执行一次,甚至在它到达浏览器之前。当C代码执行时,服务器端不存在值
arr
hey
。你到底想完成什么?因为不管它是什么,你试图完成它的方式是不正确的。谢谢你的澄清。我试图实现的是,当单击图表上的条形图时,jacascript函数showmodel(带参数)将被调用,此javascript将调用一个C#方法,该方法将填充ModalPopupXtender内的gridview,然后显示ModalPopupXtender。将使用javascript调用的服务器端代码将填充ModalPopupXtender内的gridview,然后显示ModalPopupXtender
function showModal(arr, hey) {
    document.getElementById('lblsample').textContent = arr + ',' + hey;
}
function showModal(arr, hey) {
    document.getElementById('<%=lblsample.ClientID%>').textContent = arr + ',' + hey;
}