刷新时的ASP.NET MVC图像加载

时间:2010-07-17 07:31:57

标签: asp.net-mvc asp.net-mvc-2 image

我试图找出如何在刷新时执行服务器ASP.NET MVC图像加载。基本上,我有一个图像阵列,我想在页面刷新时旋转。我知道如何在jQuery中执行此操作,但问题是所有图像同时加载[这在性能方面很糟糕]

有谁知道我怎么能这样做?

目前JS看起来如下,但我真的想要服务器端:

function random_imglink(){
  var myimages=new Array()
  //specify random images below. You can have as many as you wish
  myimages[1]="img1.gif"
  myimages[2]="img2.gif"
  myimages[3]="img3.gif"

  //specify corresponding links below
  var imagelinks=new Array()
  imagelinks[1]="http://www.example1.com/"
  imagelinks[2]="http://www.example2.com"
  imagelinks[3]="http://www.example3.com"

  var ry=Math.floor(Math.random()*myimages.length)

  if (ry==0)
     ry=1
     document.write('<a href='+'"'+imagelinks[ry]+'"'+'><img src="'+myimages[ry]+'" border=0></a>')
}

  random_imglink()

THX

1 个答案:

答案 0 :(得分:2)

写一个帮手怎么样:

private static Random _random = new Random();
public static MvcHtmlString RandomImage(this HtmlHelper htmlHelper)
{
    var img = new TagBuilder("img");
    var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
    var number = _random.Next(1, 4);
    var src = urlHelper.Content(string.Format("~/img{0}.gif", number));
    img.Attributes["src"] = src;
    img.Attributes["border"] = "0";
    return MvcHtmlString.Create(img.ToString());
}

您可以在页面中使用:

<%= Html.RandomImage() %>

如果你想生成锚:

public static class HtmlExtensions
{
    private class Image
    {
        public string Src { get; set; }
        public string Href { get; set; }
    }

    private static Random _random = new Random();
    private static Image[] _images = new[]
    {
        new Image { Src = "img1.gif", Href = "http://www.example1.com" },
        new Image { Src = "img2.gif", Href = "http://www.example2.com" },
        new Image { Src = "img3.gif", Href = "http://www.example3.com" }
    };

    public static MvcHtmlString RandomImage(this HtmlHelper htmlHelper)
    {
        var anchorTag = new TagBuilder("a");
        var randomImage = _images[_random.Next(0, _images.Length)];
        anchorTag.Attributes["href"] = randomImage.Href;

        var imageTag = new TagBuilder("img");
        imageTag.Attributes["src"] = randomImage.Src;
        imageTag.Attributes["border"] = "0";
        anchorTag.InnerHtml = imageTag.ToString();
        return MvcHtmlString.Create(anchorTag.ToString());
    }
}