【问题标题】:In ASP.net C# how do I pass an argument from a Javascript function to the onclick handler在 ASP.net C# 中,如何将参数从 Javascript 函数传递到 onclick 处理程序
【发布时间】:2014-07-09 01:25:50
【问题描述】:

我在客户端有这段代码:

<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 调用预先设置。我希望在单击按钮时计算参数。

【问题讨论】:

  • 您打算如何调用 javascript 函数?这看起来更像 ASP.net 网络表单而不是 MVC,如果我错了,请纠正我。

标签: c# javascript asp.net .net


【解决方案1】:

所以你不能用CommandArgument 来做。您可以做的是有一个隐藏字段,使用 javascript 设置它并在服务器端事件处理程序中访问它。

.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.
}

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我会说这并不完全正确。您可以在单击按钮、提交表单等提交表单之前运行一些客户端 javascript。然后可以在隐藏的表单字段中设置一个值,然后在服务器端获取该值。直接传过去,你是对的,做不到。
    • 是的,但这只有在点击按钮时才有效,在页面的初始渲染中不会出现这种情况
    • 正确。目前尚不清楚 OP 要在哪个阶段设置此参数。我假设点击/提交......但你知道他们对假设的看法!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 2011-01-26
    • 2012-10-18
    相关资源
    最近更新 更多