为什么<%#Eval(...)%>不渲染?实际上显示“<%#Eval(...)%>”在客户端

时间:2016-01-21 18:53:53

标签: 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作为参数后,此结果开始显示在实际评估相关记录中的值之前的位置。

可能发生什么事?我以前没见过。

2 个答案:

答案 0 :(得分:3)

将评论重新发布为答案:

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

答案 1 :(得分:0)

尝试struct Custom { let array: [Int] init(_ value: Int...) { self.array = value } } let customArray = Custom(2, 3, 4, 5).array // [2, 3, 4, 5] 我怀疑您需要服务器代码来评估javascript中的整个表达式,因此当浏览器呈现它时,它将正确触发该函数。