asp控件的动态值

时间:2014-10-02 20:03:16

标签: asp.net tags

我想在.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;语法。

在我看来,这样的事情应该是非常基本的。

1 个答案:

答案 0 :(得分:0)

因此,为了回答我自己的问题,似乎没有办法将服务器端控件和周围代码生成的状态混合在一起。原因是服务器端控件是在代码运行之前生成的,并且代码在大多数情况下运行以发出响应(想想Response.Write)。

然而,人们可以&#34;手动&#34;导致邮件返回服务器端控件,如asp:LinkBut​​ton,执行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;
}