mvc 3相当于function?

我在Asp.Net有一个网站,我试图移植到MVC 3,我之前只使用过MVC 2。 我偶然发现了以下的asp函数

看起来这可能与for循环类似,但我不太肯定如何将其转换为MVC 3架构。

将现有的WebForms应用程序移植到ASP.NET MVC不仅仅是盲目地逐行转换一些WebForms视图代码。 您应该考虑目标平台的语义。 例如,将这个asp:Repeater转换为丑陋的foreach循环,而不是考虑视图模型之类的东西,显示模板不会很好。

所以在ASP.NET MVC中,您首先要设计视图模型:

 public class MemberViewModel { public int Id { get; set; } public string Description { get; set; } } 

然后你设计一个控制器动作来填充这个视图模型:

 public ActionResult Index() { IEnumerable model = ... return View(model); } 

然后你编写一个强类型视图,在其中调用显示模板:

 @model IEnumerable @Html.DisplayForModel() 

然后定义一个显示模板,该模板将为集合的每个元素呈现( ~/Views/Shared/DisplayTemplates/MemberViewModel.cshtml ):

 @model MemberViewModel 
  • 现在您将注意到另外两个ThumbnailImageFullImage控制器操作,这些操作将允许我们获取给定成员ID的成员的图像。 例如:

     public ActionResult ThumbnailImage(int id) { byte[] thumbnail = ... return File(thumbnail, "image/jpeg"); } 

    现在,这更像是ASP.NET MVC。 正如您所看到的,它与传统WebForms完全不同。

    你认为MVC等效于asp:Repeater是完全正确的

     <% foreach( var item in Model ) { %>  <% } %> 

    你是对的,它类似于for循环。 一个简单的实现可能如下所示:

      

    您会注意到runat="server"不再有任何控件,也没有任何事件链接到代码隐藏中的处理程序。 相反,我们假设控制器已使用表示我们需要显示的数据的对象填充了Model对象。 这是使用MVC时控制器的作用。

    转发器只是一个提供数据绑定的循环,因此您可以访问正在循环的集合中的项目。 如果查看ourTeamRepeater_ItemDataBound方法,您将找到使用数据绑定项的代码,以使用数据填充项模板中的元素。

    通常你可以在MVC中使用foreach循环来循环项目。 例:

     <% foreach (var item in items) { %> 
    <%= item.Description %>
    <% } %>