Jquery - 使用 jquery 传递 asp 按钮命令参数

标签 jquery asp.net eventargs

我有asp按钮:

<asp:button ID="btn1" runat="server" CommandArgument="" CssClass="btn1" OnClick="button_click"></asp:button>

和脚本:

$("a").click(function () {
            var val = $(this).attr('id').toString();                            
            $('.btn1').attr('CommandArgument',val);
            alert($('.btn1').attr('CommandArgument').toString());
            $('.btn1').click();
        });

单击后它会提醒我命令参数。但下一步 - 当我用 jquery 触发 btn1 单击时,它会转到代码隐藏并且命令参数为空。我可以用 jquery 以某种方式传递命令参数吗?

我尝试将值保存到全局变量,但回发后它们都是空的。我不想为此使用 cookie 或 viewstate。

谢谢!

最佳答案

CommandArgument 完全是一个服务器端属性,不会呈现任何 html 属性。因此,您无法更改任何按钮的属性并单击它。好消息是,您可以使用客户端 __doPostBack 函数触发回发,并将自定义值作为第二个参数传递:

<script type="text/javascript">
    $("a").click(function () {
        var val = $(this).attr('id').toString();
        __doPostBack("<%= btn1.UniqueID %>", val);
    });
</script>

您可以从 Request.Form 集合中获取服务器点击处理程序中传递的参数:

protected void button_click(object sender, EventArgs e)
{
    var argument = Request.Form["__EVENTARGUMENT"];
}

如果上面的脚本不起作用,则可能是 __doPostBack 函数未在页面上定义。在本例中,将此代码添加到 Page_PreRender 方法中:ClientScript.GetPostBackEventReference(btn1, string.Empty); 这将强制页面在页面上定义 __doPostBack 方法。

关于Jquery - 使用 jquery 传递 asp 按钮命令参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13479430/

相关文章:

html - 嵌套的 CSS 样式不适用于 asp.net 控件

jquery - 从HTTP获取数据

c# - CSS:第一个选择器

c# - 在 aspx 页面中使用哪个事件来读取 POSTed 数据?

c# - 在事件声明中正确使用泛型

c# - 正确使用 EventArgs

jquery - 如何使用 jQuery 打开和关闭单选按钮?

javascript - jQuery 游戏问题

javascript - for循环声明语句内部的算术运算