如何从aspx文件中调用方法?

时间:2016-02-24 20:56:22

标签: c# asp.net .net webforms

我正在尝试从我的aspx文件中调用一个方法,该方法与Page Inherit中定义的类相同。

方法定义如下:

foo.aspx.cs

中的

   public void GeneratePartiesOptionsList()
        {
           //parties is a non-empty static readonly array of string[] type
            Debug.WriteLine("GeneratePartiesOptionsList() called");
            foreach(string party in parties)
            {
                Response.Write(string.Format("<option value='{0}'>{0}</option>{1}", party, Environment.NewLine));
            }
        }

从foo.aspx,我这样称呼:

<select id="list" runat="server">
                            <%
                                this.GeneratePartiesOptionsList();
                             %>
                        </select>

但是当我打开 foo.aspx 页面时,我没有得到任何内容,既没有我要生成的内容也没有错误。选择为空。我错过了什么?我是ASP.NET / WebForms的新手。

3 个答案:

答案 0 :(得分:2)

因此,Response.Write在ASP.NET中通常是一个坏主意,因为它将在不同于您预期的时间运行。赔率是您预期的文本在交付页面的某个位置(我认为它位于底部),但不是在一个有用的HTML块中。

如果你想走这条路,那么你希望你的代码隐藏方法返回一个string,然后使用<%= this.GeneratePartiesOptionsList() %>语法,这将使ASP.NET输出你想要的地方。

你应该看一下数据绑定,因为写出这样的HTML就是游向WebForms的上游......

答案 1 :(得分:1)

如果我使用<% %>语法正确回忆,您的方法需要返回string,并且该字符串由aspx页面直接写入Response。所以:

public string GeneratePartiesOptionsList()
{
       //parties is a non-empty static readonly array of string[] type
        Debug.WriteLine("GeneratePartiesOptionsList() called");

        return string.Join(
            Environment.NewLine
            parties.Select(
               party => 
                string.Format("<option value='{0}'>{0}</option>", party));
}

答案 2 :(得分:1)

<asp:TextBox ID="txtInside" runat="server" Text='<%# ShowMeQte() %>' ></asp:TextBox> 

也许它只是#你失踪了?