我在OnClientClick中使用数据绑定Eval时遇到问题,我找不到正确进行此绑定的方法。这是我的代码
<asp:LinkButton runat="server" ID="ItemMenuBtn" CssClass="ui-button ui-widget ui-corner-all" OnClientClick='OpenItemMenu(<%# Eval("NotificationData") %>);return false;'>
<i class="fa fa-lg fa-bars" aria-hidden="true"></i>
</asp:LinkButton>
我希望输出是这样的:
<a onclick="OpenItemMenu({JSON notification data here});return false;" id="some id" class="ui-button ui-widget ui-corner-all">
但是相反,我得到了:
<a onclick="OpenItemMenu(<%# Eval("NotificationData") %>);return false;" id="ctl00_m_g_28e3d385_2509_4d3a_9c53_1d17b87a802b_gvNoteworthyItems_ctl02_ItemMenuBtn" class="ui-button ui-widget ui-corner-all" href="javascript:__doPostBack('ctl00$m$g_28e3d385_2509_4d3a_9c53_1d17b87a802b$gvNoteworthyItems$ctl02$ItemMenuBtn','')">
所以我的问题是:
为什么评估似乎根本不起作用?
为什么客户端点击的所有内容都这样编码?
为什么将回发放置在链接的href中?正如您在on客户端上看到的那样,我不希望回发,因为此按钮将打开一个对话框并将数据传递给它。
最佳答案
对于OnClientClick
,您可以尝试:
OnClientClick='<%# string.Format("OpenItemMenu(\"{0}\"); return false", Eval("NotificationData")) %>'
如果LinkButton不在数据绑定控件中,则必须调用
DataBind
以确保计算数据绑定表达式:protected void Page_Load(object sender, EventArgs e)
{
ItemMenuBtn.DataBind();
}
默认情况下,单击LinkButton会在
__doPostBack
的帮助下触发回发。在false
事件处理程序中返回OnClientClick
会取消该回发。关于javascript - 在OnClientClick中进行评估,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39129604/