2010-11-21 24 views
1

用asp.net-4.0我这样做:如何在asp.net-MVC2通过列表

slideshow.aspx 
<div class="wrapCarousel"> 
    <div class="Carousel"> 
     <% foreach(var image in Images) { %> 
     <div class="placeImages"> 
     <img width="150px" height="150px" src="../Img/<%=image.TnImg%>" alt="<%=image.Name%>" /> 
     <div class="imageText"> 
     <%=image.Name%> 
     </div> 
     </div> 
     <% } %> 
    </div> 

然后图片是在后面的代码是这样 slideshow.aspx.cs:

public class Image 
    { 
     public string TnImg { get; set; } 
     public string Name { get; set; } 
     public string City { get; set; } 
     public string RefPlace { get; set; } 
     public string RefInfo { get; set; } 
     public string RefInfoDynamic { get; set; } 

     public Image(string TnImg, string Name, string City, string RefPlace, string RefInfo, string RefInfoDynamic) 
     { 
      this.TnImg = TnImg; 
      this.Name = Name; 
      this.City = City; 
      this.RefPlace = RefPlace; 
      this.RefInfo = RefInfo; 
      this.RefInfoDynamic = RefInfoDynamic; 
     } 
    } 

    Images.Add(new Image("", "", "", "", "", ""); 

现在与asp.net-MVC2我没有任何代码背后,所以我不能访问图像像以前一样,而是需要将它传递给.aspx文件。

这是如何完成的?

感谢 中号

回答

5

你会使用一个强类型的视图和模型传递到视图从控制器。

你可以找到一些细节here

这样,你会使用类似...

<% foreach(var image in Model.Images) { %> 

    <div><%= image.Name %></div> 

<% } %> 

你的控制器将类似于下面,你可以从一些外部源获取图像的列表。

public ActionResult Index() 
{ 
    ImageViewModel imageViewModel = new ImageViewModel(); 
    imageViewModel.Images = _imageRepository.GetImages(); 

    return View ("Index", imageViewModel);  

} 

在上面的代码,你可以只使用以下渲染视图

return View (imageViewModel); 

我宁愿是明确的,虽然与下面的电话,并指定名称的观点来呈现(即使虽然它是当前控制器动作的名称相同,我觉得它读取更好)

return View ("Index", imageViewModel); 
+0

因此,在这种情况下,是什么ImageViewModel(),并应在foreach像在Model.imageViewModel本“的foreach(VAR图) “ 然后? – Mikael 2010-11-21 14:08:59

+0

如果您强烈地将您的视图键入为ImageViewModel类型,并且该类型有一个属性Images,那么您将访问View with Model.Images中的数据。 – Matt 2010-11-21 14:23:54

+0

'ImageViewModel'是您创建的具有'Images'属性的类。在视图中,然后您将模型类的传入实例称为“Model”。 – svick 2010-11-21 14:26:25