【问题标题】:Shuffling divs using C# behindcode使用 C# 后台代码洗牌 div
【发布时间】:2013-08-09 14:48:50
【问题描述】:

我有一个包含 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>

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

【问题讨论】:

  • 您可以尝试将调用移至 PreRender 事件吗?
  • 我试过了。同样的错误。我开始认为这不是正确的方法。
  • 回发时会发生这种情况吗?
  • 这不是回发页面

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


【解决方案1】:

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

【讨论】:

  • 因为它不会像绘图服务器端那样快,而且还有很多其他的 js 绑定可能会变得不稳定
  • 我不同意。我认为解决此问题的正确方法是使用 jquery 将所需的 div 选择到列表中,然后在页面正文中随机重新排序。其他 js 绑定应该没有任何问题。适当地命名您的 div 并仔细选择它们,您不会有任何问题。
【解决方案2】:

我不确定为什么我没有收到该错误。刚刚试了一下,效果很好。

       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);

【讨论】:

  • 啊!问题似乎是我在第二个 div 中的包含文件:
    ...更多内容 你知道我将如何解决这个问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
  • 2015-03-01
  • 2010-11-12
  • 1970-01-01
  • 2012-09-01
相关资源
最近更新 更多