我在客户端有这个代码:
<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调用设置。我想在按钮点击时计算参数。
答案 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传递到服务器。