что эквивалентно asp: datalist в asp.net-mvc - PullRequest
2 голосов
/ 10 августа 2009

Я мигрирую сайт на asp.net с сайта asp.net, и на одной из страниц есть список данных, как показано ниже:

 <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. как бы я занялся миграцией?

Ответы [ 3 ]

5 голосов
/ 10 августа 2009

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

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

3 голосов
/ 15 июня 2011
@{
        //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);
        }
    }
2 голосов
/ 10 августа 2009

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

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

...