Только мои 5 центов, код для действия MVC, с использованием куки, чтобы мы не повторяли одно и то же имя файла дважды:
[AllowAnonymous]
//-------------------------------------------------------------
public async Task<ActionResult> RandomBackground()
//-------------------------------------------------------------
{
var basePath = "~/Content/images/backgrounds";
var dir = System.Web.Hosting.HostingEnvironment.MapPath(basePath);
var rand = new Random();
var files = System.IO.Directory.GetFiles(dir, "*.jpg");
if (files!=null)
{
var cookie = "Background";
var pickedFile = "";
var fileName = "";
var oldFilename = "";
while ((oldFilename == fileName) && files.Count<string>()>1)
{
oldFilename = ReadControllerCookie(cookie);
pickedFile = files[rand.Next(files.Length)];
fileName = System.IO.Path.GetFileName(pickedFile);
}
SaveControllerCookie(cookie, fileName);
return Content(fileName);
}
return new EmptyResult();
}
Используется как:
<img src="~/Content/images/backgrounds/@Html.Action("RandomBackground", "YourControllerName")">