1

我有一个有 10 个 div 的 aspx 页面。每次页面刷新时,其中 6 个 div 需要随机定位。这些 div 中有很多内容,所以我必须避免使用 javascript 来执行此操作。有人告诉我,这可以使用 c# 中的代码隐藏来实现。这是一个想法:

protected void Page_Load(object sender, EventArgs e)
{
    var plantripsmall = new List<HtmlGenericControl> {
        div1, div2
    };

    DrawShuffled(plantripsmall);
}

public void DrawShuffled(List<HtmlGenericControl> orig)
{

    Random rnd = new Random();

    var shuffled = orig.OrderBy(s => rnd.Next()).ToList();

    int i = 0;
    while (i < orig.ToArray().Length)
    {
        orig[i].InnerHtml = shuffled[i].InnerHtml;
        i++;
    }
}

但这并没有真正起作用。

Cannot get inner content of div2 because the contents are not literal

而且我想避免控制

更新问题似乎是我在第二个div中的包含文件:

<div runat="server" id="div2">
<!--#include virtual="files/hello.aspx" -->
...more content
</div>

你知道我将如何解决这个问题吗?

4

2 回答 2

2

您真的应该使用 jQuery 或其他一些客户端 javascript 来执行此操作。我不明白你为什么要求 javascript 不能为此工作。

于 2013-08-09T15:05:45.697 回答
0

我不确定为什么我没有收到该错误。刚试过这个,它的工作原理。

       HtmlGenericControl div1 = new HtmlGenericControl("div");
       HtmlGenericControl div2 = new HtmlGenericControl("div");
       div1.InnerHtml = "test1";
       div2.InnerHtml = "test2";
       var lst = new List<HtmlGenericControl>
       {
          div1,
          div2
       };
       Random rnd = new Random();

       var shuffled = lst.OrderBy(s => rnd.Next()).ToList();

        int i = 0;
        while (i < lst.ToArray().Length)
        {
            lst[i].InnerHtml = shuffled[i].InnerHtml;
            i++;
        }

        this.Controls.Add(div1);
        this.Controls.Add(div2);
于 2013-08-09T15:47:14.577 回答