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

时间:2014-06-24 09:42:47

标签: c# javascript asp.net

任何人都可以帮我在带有参数的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()); 

2 个答案:

答案 0 :(得分:1)

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

  • WebMethod
  • UpdatePanel
  • ASMX网络服务
  • WCF网络服务
  • Web API
  • SignalR

您选择的那个取决于您想要实现的目标。在任何情况下,您都需要发出AJAX请求(这可以使用jQuery非常简单地完成)并处理JavaScript代码中的返回值。您似乎正在使用WebFormsUpdatePanelWebForms - 这样做的方式。 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;
}