使用C#behindcode来改组div

时间:2013-08-09 14:48:50

标签: c# asp.net random code-behind

我有一个有10个div的aspx页面。每次页面刷新时,需要随机定位其中6个div。那些div有很多内容,所以我不得不避免使用javascript。我被告知可以使用c#中的codebehind来实现。 这是一个想法:

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

此外我想避免控制

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

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

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

2 个答案:

答案 0 :(得分:2)

你应该真的使用jQuery或其他一些客户端javascript来做到这一点。我不明白为什么你要求javascript不能用于此。

答案 1 :(得分: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);