Как перемещать данные в WebForms, как в MVC
Как мне перемещаться по данным в WebForms, как в ASP.NET MVC? Например, в MVC это так же просто, как:
<table>
@foreach (var myItem in g)
{
@<tr><td>@MyItem.title<td></tr>
}
</table>
Какой самый простой и простой способ сделать это в WebForms? Как выглядел бы код?
Или я могу добавить проект MVC в приложение webforms, чтобы вместо этого использовать функции MVC?
Спасибо.
Ответы
Ответ 1
Вместо того, чтобы использовать ретранслятор, вы можете просто просмотреть список аналогичным способом типа MVC с помощью тегов <% %>
и <%= %>
.
<table>
<% foreach (var myItem in g) { %>
<tr><td><%= myItem.title %></td></tr>
<% } %>
</table>
Пока свойство, которое вы просматриваете, доступно на странице aspx/ascx (например, объявлено как защищенное или общедоступное), вы можете пропустить его. В коде отсутствует другой код.
<% %>
будет оценивать код, а <%= %>
выдаст результат.
Вот пример:
Объявите этот список на уровне своего класса в вашем коде:
public List<string> Sites = new List<string> { "StackOverflow", "Super User", "Meta SO" };
Это просто простой список строк, поэтому в вашем файле aspx
<% foreach (var site in Sites) { %> <!-- loop through the list -->
<div>
<%= site %> <!-- write out the name of the site -->
</div>
<% } %> <!--End the for loop -->
Ответ 2
В WebForm вы можете использовать элемент управления ретранслятора:
<asp:Repeater id="cdcatalog" runat="server">
<ItemTemplate>
<td><%# Eval("title")%></td>
</ItemTemplate>
</asp:Repeater>
В коде позади:
cdcatalog.DataSource = yourData;
cdcatalog.DataBind();
Ответ 3
Вы можете использовать Repeater
с любым видом допустимого объекта DataSource
(SqlDataSource
, EntityDataSource
, ObjectDataSource
):
- Определить источник данных
- Ссылка на источник данных в вашем Reperater
....
<asp:Repeater id="someRep" runat="server" DataSourceID="YourDataSource">
<ItemTemplate>
<tr>
<td><%# Eval("PropertyName") %></td>
</tr>
</ItemTemplate>
</asp:Repeater>
...