我在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(&lt;%# Eval(&quot;NotificationData&quot;) %>);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")) %>'


如果LinkBut​​ton不在数据绑定控件中,则必须调用DataBind以确保计算数据绑定表达式:

protected void Page_Load(object sender, EventArgs e)
{
    ItemMenuBtn.DataBind();
}


默认情况下,单击LinkBut​​ton会在__doPostBack的帮助下触发回发。在false事件处理程序中返回OnClientClick会取消该回发。

关于javascript - 在OnClientClick中进行评估,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39129604/

10-11 03:09