Jquery - 使用 jquery 传递 asp 按钮命令参数
我有 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 或视图状态。
谢谢!
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
方法。
我发现使用 __doPostBack('id','args') 会在提交按钮上创建完整的页面回发。我发现更简单的方法是在页面上添加一个隐藏字段,设置值,然后调用 button.click() 事件
<asp:Button ID="btnTrigger" runat="server" ClientIDMode="Static" OnClick="btnTrigger_Click" />
<asp:HiddenField ID="CommandArg" runat="server" ClientIDMode="Static" />
$('#CommandArg').val('my argument');
$('#btnTrigger').click();
或者您可以尝试这个:
<script type="text/javascript">
function MaybeThisWorks(obj)
{
__doPostBack( obj.id, 'OtherInformation' );
return true;
}
</script>
...
<asp:Button Text="ButtonValue" ID="RepP1" runat="server" OnClientClick="MaybeThisWorks(this);" OnClick="CodeBehindFunction" />
'OtherInformation' 可以用任何字符串或变量替换。
例如
$('#calendar').fullCalendar('getDate').getMonth()+','+$('#calendar').fullCalendar('getDate').getFullYear()
CodeBehindFunction 是当您单击按钮时在服务器上执行的代码隐藏函数(例如,打印报告的按钮,需要在代码隐藏函数中输入 jquery 值)。
在代码隐藏函数中,您可以通过 Request.Form["__EVENTARGUMENT"] 获取参数
protected void CodeBehindFunction(object sender, EventArgs e)
{
string arguments = Request.Form["__EVENTARGUMENT"];
...
}