我想在.aspx页面中使用以下类型的代码片段:
<% foreach( int i in <some-expression> ) { %>
<asp:linkbutton CommandArgument="<value-of-i>" OnClick="<some-handler>" runat="server" />
<$ } %>
基本上,我想生成页面无数据绑定,但是从后面的代码中的变量向链接按钮提供CommandArgument的值,这样当单击处理程序激活时,我可以从中检索变量的值CommandArgument,代码运行时存在。
出于各种原因,我不想使用数据绑定。这可能吗?我理解&lt;%:...%&gt;语法等同于Response.Write,语法&lt;%#%&gt;检索数据绑定的值。我也知道我不能使用&lt;%:%&gt;语法在这里解决我的问题。因为我没有使用数据绑定,所以我不能使用&lt;%#%&gt;语法。
在我看来,这样的事情应该是非常基本的。
答案 0 :(得分:0)
因此,为了回答我自己的问题,似乎没有办法将服务器端控件和周围代码生成的状态混合在一起。原因是服务器端控件是在代码运行之前生成的,并且代码在大多数情况下运行以发出响应(想想Response.Write)。
然而,人们可以&#34;手动&#34;导致邮件返回服务器端控件,如asp:LinkButton,执行java脚本调用__doPostBack。所以解决我的问题的方法如下:
<% for( int i = 0; i < 10; i++ ) { %>
<a href="" onclick='javascript:__doPostBack( "MeClicked", "<%: i %>" ); return false; '>Click Me <%: i %></a>
<% } %>
Page_Load的作用类似::
if ("MeClicked".Equals( Request.Form[ "__EVENTTARGET" ] )) {
string arg = Request.Form[ "__EVENTARGUMENT" ];
Response.ClearContent();
Response.Write( arg + " Clicked" );
Response.End();
return;
}