Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net从前端调用方法_C#_Asp.net - Fatal编程技术网

C# asp.net从前端调用方法

C# asp.net从前端调用方法,c#,asp.net,C#,Asp.net,我在后端有一个方法,我想从前端调用它,但似乎无法让它工作。这是我的密码: <% foreach(string item in Plants){ %> <li> <span class="folder"> <asp:label ID="lblPlantName" runat="server" Text='<% GetPlantName(item) %>'></asp:label>

我在后端有一个方法,我想从前端调用它,但似乎无法让它工作。这是我的密码:

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

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

<%} %>

  • getplantName方法应该返回一个字符串并填充文本。但这不是出于某种原因而被要求的


    有人有什么想法或建议吗?

    要返回一个字符串,您需要
    响应。请编写
    ,该字符串用速记形式写成
    ,以便:

    <%= GetPlantName(item) %>
    

    请使用
    而不是
    ,方法应该是公共的或受保护的。

    虽然您的代码可能正在工作(使用其他人建议的修复程序),但这不是一个好的做法。使用ASP.NET时,这是一种经典的ASP方式,就像在高速公路上驾驶跑车以每小时10英里的速度行驶一样

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

    .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>
    
    在您的情况下,只需将
    arrPlants
    替换为真正的数组,
    Plants


    请随时询问更多细节或解释。:)

    您可能需要澄清您的术语。“前端”和“后端”我想你分别指的是“aspx”和“代码隐藏”,但如果没有上下文,我通常会将“前端”和“后端”解释为“客户端”和“服务器端”,这是一个完全不同的问题。@Scott Stafford:谢谢你的评论。只是想澄清一下:前端:ascx后端:ascx.csI不确定我是否同意这是经典的ASP。虽然使用中继器控件很好,但此中继器控件选项在MVC中不可用。此外,我还发现,通过创建自己的控件,它们通常工作得更好,而且不会受到控件带来的限制。@Funky我已经编写了足够多的经典ASP相信我。。。拥有
    Label
    控件并以意大利面代码分配其文本会使
    Label
    的使用完全无用-这种控件的全部含义是您可以在后面的代码中设置其文本。但我只是一个人,不能把我的个人意见强加给你——只要给你我的两分钱和友好的建议就行了。:)哦,还有一个记录-
    是全尺寸服务器控制。如果你可以使用它,你可能也可以使用Repeater。这很酷,我感谢你的反馈,因为我想知道我做的事情是否正确!:)但是如果你没有中继器控制器可以像MVC一样使用,你会怎么做呢?对于这个解决方案,我将使用您提到的repeater,因为它是webforms站点的最佳解决方案@不好意思,我不熟悉MVC,你也没有在你的问题上加上这个标签。。但我很确定他们有比可怕的意大利面代码更好的方法?在我做经典ASP程序员的日子里,我确实看到了太多的东西
    string[] arrPlants = new string[] { "Sacred Datura", "Kambroo", "Wallflower", "Beech 'Retroflexa'", "Zephyr Flower" };
    rptPlants.DataSource = arrPlants;
    rptPlants.DataBind();