任何人都可以帮我在带有参数的aspx页面中使用Javascript后面的代码中调用C#方法吗?
这是我调用sample()方法的javascript:
<script type="text/javascript">
function showModal(arr, hey) {
'<%=sample(arr,hey)%>';
}
</script>
我有这个要调用的c#代码有2个参数:
protected string sample(int i, string a)
{
lblsample.Text =i + "," + a;
return lblsample.Text;
}
这给了我一个关于Javascript代码的错误:
arr does not exist in the current context
顺便说一句,当点击图表中的特定栏时,将执行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());
答案 0 :(得分:1)
扩展大卫的答案: 在呈现页面后,有许多方法可以从客户端访问服务器端。部分列表,没有特别的顺序:
WebMethod
UpdatePanel
ASMX
网络服务WCF
网络服务Web API
SignalR
您选择的那个取决于您想要实现的目标。在任何情况下,您都需要发出AJAX
请求(这可以使用jQuery
非常简单地完成)并处理JavaScript
代码中的返回值。您似乎正在使用WebForms
。 UpdatePanel
是WebForms
- 这样做的方式。 UpdatePanel
为您处理ajax调用,您只需要正确设置它。
编辑:如果你编辑你的问题并更好地解释你真正想要实现的目标,也许我可以提供更有效的答案。
答案 1 :(得分:0)
您不能将客户端和服务器端代码混合在一起。请求页面时,服务器端代码在服务器上运行 。当时它不了解任何客户端事件或信息。
为什么要尝试在服务器端代码中执行此操作?您所做的只是在页面元素上设置一些文本。只需使用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;
}