我有一个有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>
你知道我将如何解决这个问题吗?
答案 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);