在ASP.net C#中如何将参数从Javascript函数传递给onclick处理程序

时间:2014-07-09 01:25:51

标签: c# javascript asp.net .net

我在客户端有这个代码:

<asp:imagebutton id="ctrlSend" runat="server" ImageUrl="Btn_New.gif" onclick="ctrlSend_Click"></asp:imagebutton>

我有这个功能接收点击:

protected void ctrlSend_Click(object sender, System.Web.UI.ImageClickEventArgs e)

这很好但是我想添加一个动态参数,我将在客户端使用Javascript计算并传递给ctrlSend_Click函数。

有人可以解释一下如何做到这一点吗?我已经探索过使用CommandArgument,但我相信不能通过Javascript调用设置。我想在按钮点击时计算参数。

2 个答案:

答案 0 :(得分:4)

因此,您无法使用CommandArgument执行此操作。你可以做的是有一个隐藏字段,用javascript设置并在serverside事件处理程序中访问它。

<强>的.aspx

<asp:imagebutton id="ctrlSend" runat="server" ImageUrl="Btn_New.gif" onclick="ctrlSend_Click" OnClientClick="setParameter"></asp:imagebutton>
<input type="hidden" id="clickParameter" runat="server" />

请注意隐藏字段上的runat="server"。这使它成为.net可访问控件。另请注意图片按钮上的OnClientClick属性。

<强>的javascript

function setParameter(){
     var hdnField = document.getElementById("<%=clickParameter.ClientID %>");
     //Use Client ID to avoid any ASP.net name mangling

     hdnField.value = ;//Whatever your logic is to set this value;

     return true; //Should now ensure the form is submitted.

}

C#代码背后

protected void ctrlSend_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
    string param = clickParameter.value;
    //Cast and convert your parameter as needed from a string.
}

上面可能存在一些语法错误,但它应该让你朝着正确的方向前进。

答案 1 :(得分:1)

这是不可能的,因为在服务器端完成执行后javascript在浏览器中运行。 您必须发出ajax请求才能将数据从javascript传递到服务器。