2009-08-10 2 views
2

я перенастройке сайтов на asp.net с сайта asp.net и один из страниц имеет DataList, как показано ниже:что эквивалент осины: DataList в asp.net-MVC

<asp:DataList ID="MyDataList" runat="server" BackColor="#EEEEEE" CellPadding="10" 
    ItemStyle-HorizontalAlign="Center" GridLines="Both" Width="750" RepeatDirection="Horizontal" 
    RepeatColumns="4" RepeatLayout="Table" ItemStyle-VerticalAlign="Top"> 
    <ItemTemplate> 
     <table> 
      <tr align="center"> 
       <td valign="top"> 
        <table> 
         <tr> 
          <td width="30%"> 
          </td> 
          <td> 
           <asp:HyperLink ID="HyperLink1" runat="server"> 
           <asp:Image style="cursor:pointer" CssClass="instant ishadow50" ID="lnkEnlarge" runat="server"></asp:Image></asp:HyperLink> 
          </td> 
          <td width="30%"> 
          </td> 
         </tr> 
        </table> 
       </td> 
      </tr> 
      <tr align="center"> 
       <td> 
        <asp:Label CssClass="Comments" ID="lblComment" runat="server"></asp:Label><br> 
       </td> 
      </tr> 
     </table> 
    </ItemTemplate> 
</asp:DataList> 

Что такое эквивалент в asp.net-mvc. как я могу перейти на миграцию?

ответ

5

ASP.NET MVC не имеет элементов управления сервером. вы можете использовать простой цикл foreach на вашей модели (вы также можете использовать частичный вид).

другой вариант - написать Html helper.

2

Поскольку CD указывает, основной способ - просто написать Html. Верните его в старую школу. Есть еще несколько продвинутых помощников, если вы предпочитаете использовать более абстрактный подход. Одним из хороших вариантов для таких вещей является MvcContrib grid - он, как правило, будет держать вас в стороне от прямого поколения html, сохраняя при этом рабочий стиль MVC.

NB: ссылка указывает на версию сетки MvcContrib, которая отправляет публичный релиз на CodePlex на момент написания этой статьи, вам нужно будет захватить источник и создать свой собственный, чтобы воспользоваться им.

3
@{ 
     //repeatdirection = Horizontal, RepeatColumns = 4 
     const int NumberOfColumns = 4; 
     int skip = 0; 
     var items = Model.DataStuff.Skip(skip).Take(NumberOfColumns); 
     while(items.Count() > 0) { 
      <tr> 
       @foreach (var item in items) { 
        <td> 
         @Html.ActionLink(item.Name...etc) 
        </td> 
       } 
      </tr> 
      skip += NumberOfColumns; 
      items = Model.Skip(skip).Take(NumberOfColumns); 
     } 
    } 
+0

+1 Не проверял его, но похоже, что он сработает. –

Смежные вопросы