1

我正在努力学习 C#。我发现很多教程都写入控制台,但我想在 Web 应用程序的上下文中练习它,并以某种控制(文字、标签或其他东西)将我的结果写入页面. 我从一个简单的 FizzBu​​zz 程序开始,但由于某种原因,它只打印循环中的最后一个数字 (99)。有什么想法可以将每次迭代写到页面上吗?提前致谢

我的代码:

<asp:Literal ID="myLit" runat="server"></asp:Literal>

namespace practice
{
    public partial class fizzbuzz_csharp : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < 100; i++)
            {
                myLit.Text = i.ToString();
            }
        }
    }
}
4

4 回答 4

5

您正在将文本直接写入控件而不是附加它。在循环结束时,之前的值被覆盖,只显示最后一个

将其更改为

MyLit.Text += i.ToString + "<BR />"
于 2013-01-13T23:16:36.887 回答
3

您总是在循环中覆盖控件的Text属性。Literal这就是为什么你只看到最后一个。您可以使用 aListBox代替:

for (int i = 0; i < 100; i++)
{
    myListBox.Items.Add(i.ToString());
}

您也可以附加<br />以包装每一行,尽管这在 web.xml 中不是很好的做法。

for (int i = 0; i < 100; i++)
{
    myLit.Text += i.ToString() + "<br />";
}
于 2013-01-13T23:15:43.033 回答
2

您正在覆盖myLit.Text循环的每次迭代,因此其最终值为"100". 你想追加到myLit.Text。为了提高效率,这可能最好通过使用类似的东西来完成 aSystem.Text.StringBuilder然后将最终结果分配给myLit.Text.

于 2013-01-13T23:16:08.250 回答
0

将循环内部更改为

myLit.Text += i.ToString() + "<br />";
于 2013-01-13T23:25:08.057 回答