Я пытаюсь получить случайно выбранное фоновое изображение (из 4-х изображений), чтобы оно отображалось в качестве фонового изображения для панели asp.net.Случайное фоновое изображение на DIV
Проблема заключается в том, что код работает при переходе через код в режиме отладки. После запуска кода на веб-сайте без отладки все изображения одинаковы. Его почти так, как если бы случайное число не получалось достаточно быстро.
Пользовательский контроль находится внутри информационного центра.
UserControl это:
<asp:Panel ID="productPanel" CssClass="ProductItem" runat="server">
<div class="title" visible="false">
<asp:HyperLink ID="hlProduct" runat="server" />
</div>
<div class="picture">
<asp:HyperLink ID="hlImageLink" runat="server" />
</div>
<div class="description" visible="false">
<asp:Literal runat="server" ID="lShortDescription"></asp:Literal>
</div>
<div class="addInfo" visible="false">
<div class="prices">
<asp:Label ID="lblOldPrice" runat="server" CssClass="oldproductPrice" />
<br />
<asp:Label ID="lblPrice" runat="server" CssClass="productPrice" /></div>
<div class="buttons">
<asp:Button runat="server" ID="btnProductDetails" OnCommand="btnProductDetails_Click"
Text="Details" ValidationGroup="ProductDetails" CommandArgument='<%# Eval("ProductID") %>'
SkinID="ProductGridProductDetailButton" /><br />
<asp:Button runat="server" ID="btnAddToCart" OnCommand="btnAddToCart_Click" Text="Add to cart"
ValidationGroup="ProductDetails" CommandArgument='<%# Eval("ProductID") %>' SkinID="ProductGridAddToCartButton" />
</div>
</div>
и код за это:
protected void Page_Load(object sender, EventArgs e)
{
// Some code here to generate a random number between 0 & 3
System.Random RandNum = new System.Random();
int myInt = RandNum.Next(4);
if (productPanel.BackImageUrl != null)
{
switch (myInt)
{
case 0:
productPanel.BackImageUrl = "../App_Themes/emmaharris/images/frame1.gif";
break;
case 1:
productPanel.BackImageUrl = "../App_Themes/emmaharris/images/frame2.gif";
break;
case 2:
productPanel.BackImageUrl = "../App_Themes/emmaharris/images/frame3.gif";
break;
case 3:
productPanel.BackImageUrl = "../App_Themes/emmaharris/images/frame4.gif";
break;
}
}
// End of new code to switch background images
}
T
Я думаю, что вы на что-то! страница цитирует «Если вы используете одно и то же начальное значение дважды, вы получите одну и ту же последовательность случайных чисел. Случайное использует текущее время в качестве семени. Приведенный выше код создает несколько экземпляров в очень быстрой последовательности, а« текущее время »- имеет тенденцию иметь зернистость не менее 10 мс, поэтому многие экземпляры будут иметь одно и то же семя и, таким образом, создать одну и ту же последовательность чисел ». Я считаю, что код выполняет, что быстро получает тот же самый временной код «семя», что и другие панели, и, следовательно, одно и то же изображение. Мне нужен более надежный случайный метод. –
@Ian - взгляните на класс MiscUtility Jon, у которого есть генератор случайных чисел «Robust». (ссылка в сообщении). Я также отредактировал сообщение, чтобы включить его код. –
@metro smurf, используя код miscutility, решил проблему. Спасибо всем за вашу помощь. –