为什么 <%# Eval(...) %> 不呈现?实际显示客户端中的"<%# Eval(...) %>"

  • 本文关键字:Eval 显示 客户端 asp.net eval
  • 更新时间 :
  • 英文 :


我在 ASP.Net 中有以下控件

<asp:Button ID="btnDownload" runat="server" Text="Run" CssClass="button" OnClientClick='Download( <%# Eval("ID") %> )' />

当我运行页面时,以下详细信息将输出到浏览器。

<input type="submit" name="gvMaster$ctl02$btnDownload" value="Run" onclick="DownloadReport( &lt;%# Eval(&quot;ID&quot;) %> );" id="gvMaster_btnDownload_0" class="button" />

为什么<%# Eval("ID") %>实际上没有评估? 需要明确的是,最初我在这个语句中有一个小的JS片段。 我不得不做一个小的修改,所以我把它移到了一个JS方法。 移动代码并仅保留 ID 作为参数后,此结果开始显示之前实际评估关联记录中的值的位置。

这是怎么回事? 我以前没有见过这个。

重新发布评论作为答案:

我认为您无法使用这样的数据绑定(混合静态文本和动态 Eval 值)在服务器端控件上设置属性。您应该将 OnItemDataBound 事件用于父转发器/datagrid/etc 并将其设置在代码隐藏中,或者使用 OnClientClick='<%# Eval("ID", "Download({0})") %>' ,其中计算整个值并一次性发送到属性。

尝试OnClientClick='<%# "Download(" +Eval("ID") + " );" %>'我怀疑您需要服务器代码来计算JavaScript中的整个表达式,以便在浏览器呈现时它将正确触发函数。

最新更新