asp.net从前端调用方法

时间:2011-03-23 13:06:49

标签: c# asp.net

我在后端有一个方法,我想从我的前端打电话,但似乎无法让它正常工作。这是我的代码:

<% foreach(string item in Plants){ %>

    <li>
        <span class="folder">
            <asp:label ID="lblPlantName" runat="server" Text='<% GetPlantName(item) %>'></asp:label>
        </span>
    </li>

<%} %>

getplantName方法应返回一个字符串并填入文本。但由于某种原因,这不会被调用。

任何人都有任何想法或建议吗?

3 个答案:

答案 0 :(得分:9)

请使用<%= GetPlantName(item) %>代替<% GetPlantName(item) %>,方法应为公开或受保护。

答案 1 :(得分:8)

要返回一个字符串,您需要Response.Write,并以<%=%>的形式写成:

<%= GetPlantName(item) %>

答案 2 :(得分:3)

虽然您的代码可能正在运行(使用其他人建议的修复程序),但这不是一个好习惯。当你使用ASP.NET时,它是经典的ASP方式 - 就像在高速公路上用跑车驾驶10英里/小时。

一个好的做法是使用Repeater控件 - 它仍然很简单,而且更优雅。

.aspx现在看起来像这样:

<asp:Repeater ID="rptPlants" runat="server">
    <HeaderTemplate><ol></HeaderTemplate>
    <FooterTemplate></ol></FooterTemplate>
    <ItemTemplate>
        <li>
            <span class="folder">
                <%# Container.DataItem %>
            </span>
        </li>
    </ItemTemplate>
</asp:Repeater>

要绑定数据,请在代码后面的Page_Load函数中包含此类代码:

string[] arrPlants = new string[] { "Sacred Datura", "Kambroo", "Wallflower", "Beech 'Retroflexa'", "Zephyr Flower" };
rptPlants.DataSource = arrPlants;
rptPlants.DataBind();

在您的情况下,只需将arrPlants替换为真实数组Plants

随时询问进一步的细节或解释。 :)