我正在试图弄清楚如何使用内联变量调用方法,比如下面的例子,f。
<table stuff here>
<% foreach (Foo f in listOfFoos) { %>
<tr>
<td>
<%= Fubar(f)%>
</td>
<td>
<%= Fubar1(f) %>
</td>
<td>
<%= Fubar2(f)%>
</td>
<td>
<%= Fubar3(f)%>
</td>
<td>
<%= Fubar4(f)%>
</td>
<td>
<%= Fubar5(f)%>
</td>
<td>
<asp:Button Text="Click me!" runat="server" OnClick="FooBar"/>
</td>
</tr>
该方法的定义如下(在后面的代码中定义)
public void FooBar(Foo myFoo);
我想在点击时调用该方法,然后传入f。 我是asp.net的新手!
答案 0 :(得分:0)
请改用转发器。从头顶添加这个可能会有一些错误,但使用转发器的想法是重要的部分。
<强> ASPX 强>
<table>
<asp:Repeater ID="rptFubars" runat="server">
<ItemTemplate>
<tr>
<td>
<%# Fubar(Container.DataItem as [DATA_ITEM_TYPE!!])%>
</td>
<td>
<%# Fubar1(Container.DataItem as [DATA_ITEM_TYPE!!])%>
</td>
<td>
<%# Fubar2(Container.DataItem as [DATA_ITEM_TYPE!!])%>
</td>
<td>
<%# Fubar3(Container.DataItem as [DATA_ITEM_TYPE!!])%>
</td>
<td>
<%# Fubar4(Container.DataItem as [DATA_ITEM_TYPE!!])%>
</td>
<td>
<%# Fubar5(Container.DataItem as [DATA_ITEM_TYPE!!])%>
</td>
<td>
<asp:Button Text="Click me!" runat="server" OnClick="FooBar"/>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
代码背后
rptFubars.DataSource = listOfFoos;
rptFubars.DataBind();
答案 1 :(得分:0)
第一个FooBar必须有这个签名:
private void FooBar(object sender, EventArgs e)
{
}
但是,最好使用OnCommand而不是OnClick,将Id的f(或f的其他标识符)作为CommandArgument传递。
<table stuff here>
<% foreach (Foo f in listOfFoos) { %>
<tr>
<td>
<%= Fubar(f)%>
</td>
<td>
<%= Fubar1(f) %>
</td>
<td>
<%= Fubar2(f)%>
</td>
<td>
<%= Fubar3(f)%>
</td>
<td>
<%= Fubar4(f)%>
</td>
<td>
<%= Fubar5(f)%>
</td>
<td>
<asp:Button Text="Click me!" runat="server" OnCommand="FooBar" CommandName="SomeCommnad" CommandArgument="<%= f.Id >" />
</td>
</tr>
...
FooBar的签名是:
private void FooBar(Object sender, CommandEventArgs e)
{}