C# ASP.NET中的按钮循环
我被困了两个小时,需要帮助。我在网上找到的每一个例子都试过了,但都不管用。我正在C# ASP.NET中的按钮循环,c#,html,asp.net,C#,Html,Asp.net,我被困了两个小时,需要帮助。我在网上找到的每一个例子都试过了,但都不管用。我正在ASP.NET中构建一个网页,并希望创建一个按钮列表。看起来不太难吧?但这给我带来了麻烦 这是我的代码: <ul> <form id="tagloop" runat="server"> <% foreach (string i in data)%> <%Response.Write("<li><button runat=\"serve
ASP.NET
中构建一个网页,并希望创建一个按钮列表。看起来不太难吧?但这给我带来了麻烦
这是我的代码:
<ul>
<form id="tagloop" runat="server">
<% foreach (string i in data)%>
<%Response.Write("<li><button runat=\"server\" type=\"submit\" onserverclick=\"ClickTag\">" + i + "</button></li>");%>
</form>
</ul>
我是否可以让它循环,在数据中包含I的文本,并在单击时调用正确的函数?我还没有找到三者的平衡点,任何帮助都将不胜感激。像这样的事情
<form id="tagloop" runat="server">
<%
List<int> data = new List<int>();
data.Add(1);
data.Add(2); %>
<% foreach (int i in data)%>
<%Response.Write("<li><button runat=\"server\"
type=\"submit\"onclick=\"ClickTag\">" + i + "</button></li>");%>
</form>
像这样的东西
<form id="tagloop" runat="server">
<%
List<int> data = new List<int>();
data.Add(1);
data.Add(2); %>
<% foreach (int i in data)%>
<%Response.Write("<li><button runat=\"server\"
type=\"submit\"onclick=\"ClickTag\">" + i + "</button></li>");%>
</form>
如果要创建服务器端控件,最好使用
asp:Repeater
:
<asp:Repeater runat="server" ID="Repeater1" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<li>
<asp:Button runat="server" ID="RepeaterButton" Text="<%# Container.DataItem %>" OnClick="RepeaterButton_Click"/>
</li>
</ItemTemplate>
</asp:Repeater>
protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack) return;
var data = new List<string> { "Test1", "Test2", "Test3", "Test4" };
Repeater1.DataSource = data;
Repeater1.DataBind();
}
在.cs文件中有一个方法返回人员列表:
IEnumerable<Person> Persons()
{
for (int i = 0; i < 10; i++)
{
yield return new Person { FirstName = $"Foo{i}", LastName = $"Bar{i}" };
}
}
IEnumerable Persons()
{
对于(int i=0;i<10;i++)
{
返回新的Person{FirstName=$“Foo{i}”,LastName=$“Bar{i}”;
}
}
然后,可以在repeater控件中引用对象属性:
<asp:Repeater runat="server" ID="Repeater1" ItemType="WebFormsSandbox.Person">
<ItemTemplate>
<li>
<asp:Button runat="server" ID="RepeaterButton" Text="<%#: Item.FirstName %> <%#: Item.LastName %>" OnClick="RepeaterButton_Click"/>
</li>
</ItemTemplate>
</asp:Repeater>
如果要创建服务器端控件,最好使用asp:Repeater
:
<asp:Repeater runat="server" ID="Repeater1" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<li>
<asp:Button runat="server" ID="RepeaterButton" Text="<%# Container.DataItem %>" OnClick="RepeaterButton_Click"/>
</li>
</ItemTemplate>
</asp:Repeater>
protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack) return;
var data = new List<string> { "Test1", "Test2", "Test3", "Test4" };
Repeater1.DataSource = data;
Repeater1.DataBind();
}
在.cs文件中有一个方法返回人员列表:
IEnumerable<Person> Persons()
{
for (int i = 0; i < 10; i++)
{
yield return new Person { FirstName = $"Foo{i}", LastName = $"Bar{i}" };
}
}
IEnumerable Persons()
{
对于(int i=0;i<10;i++)
{
返回新的Person{FirstName=$“Foo{i}”,LastName=$“Bar{i}”;
}
}
然后,可以在repeater控件中引用对象属性:
<asp:Repeater runat="server" ID="Repeater1" ItemType="WebFormsSandbox.Person">
<ItemTemplate>
<li>
<asp:Button runat="server" ID="RepeaterButton" Text="<%#: Item.FirstName %> <%#: Item.LastName %>" OnClick="RepeaterButton_Click"/>
</li>
</ItemTemplate>
</asp:Repeater>
首先在周围添加{},我认为如果没有它,这甚至不起作用。您永远不应该真正使用响应。编写响应时,它肯定不会像您注意到的那样与服务器端控件一起工作。您首选的解决方案是什么。是否希望服务器端控件具有代码隐藏事件处理程序?它可能会循环一次,因为数据中只有一个对象?首先在 周围添加{},我认为如果没有它,这甚至不起作用。您永远不应该真正使用响应。编写响应时,它肯定不会像您注意到的那样与服务器端控件一起工作。您首选的解决方案是什么。是否希望服务器端控件具有代码隐藏事件处理程序?它可能会循环一次,因为数据中只有一个对象?我收到一个无效的回发或回调错误。我试着把很多事情都改成没什么不同。有什么想法吗?请参阅页面加载方法的更新代码。您需要添加回发检查。我收到无效的回发或回调错误。我试着把很多事情都改成没什么不同。有什么想法吗?请参阅页面加载方法的更新代码。您需要添加回发检查