将内联变量传递给aspx代码隐藏方法

时间:2013-04-10 20:45:08

标签: asp.net

我正在试图弄清楚如何使用内联变量调用方法,比如下面的例子,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的新手!

2 个答案:

答案 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)
{}