我正在尝试从我的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的新手。
答案 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>
也许它只是#你失踪了?