我来自MVC背景,我可以从控制器传递模型数据列表,以结构方式查看更多内容。我现在需要如何将来自C#类的storgly类型模型数据传递给页面。
我正在使用ASP.NET 3.5
public class RolesModel
{
public RolesModel() { }
public long RoleID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public DateTime CreatedDate { get; set; }
}
我已经设法将列表数据放在aspx.cs类中...如何在aspx页面中循环表单数据???
protected void Page_Load(object sender, EventArgs e)
{
List<RolesModel> roleList = new List<RolesModel>();
roleList = RoleDefinationRelay.GetAllRoles(null);
}
<table>
<thead>
<tr>
<td>Role ID</td>
<td>Title</td>
<td>Description</td>
<td>Created Date</td>
</tr>
</thead>
<tbody>
<tr>
<%foreach(var item in %>???????????
</tr>
</tbody>
</table>
答案 0 :(得分:2)
以下是使用ASP:Repeater控件。希望这有帮助
你的.aspx中的
<form runat="server">
<asp:Repeater id="rptRoles" runat="server">
<HeaderTemplate>
<table border="1" width="100%">
<tr>
<td>Role ID</td>
<td>Title</td>
<td>Description</td>
<td>Created Date</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("RoleID")%></td>
<td><%#Eval("Title")%></td>
<td><%#Eval("Description")%></td>
<td><%#Eval("CreatedDate")%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</form>
<强> .aspx.cs 强>
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack){
List<RolesModel> roleList = new List<RolesModel>();
roleList = RoleDefinationRelay.GetAllRoles(null);
//set data source of repeater and bind
rptRoles.DataSource = roleList;
rptRoles.DataBind();
}
}
答案 1 :(得分:1)
问题在于你是从MVC的角度考虑的 - 我有相同的问题,因为我在webforms中的背景!
在webforms中你不会以这种方式绑定你的数据(你可以 - 但它需要更多的工作而且它不是真正被接受的方式)
你需要的是你的aspx是一个服务器控件,它将为你处理循环和渲染 - 对于这个例子我将使用gridview,因为它很快,但如果你需要更多的HTML控制你应该使用转发器或列表视图。
你的代码几乎就在那里......
protected void Page_Load(object sender, EventArgs e)
{
List<RolesModel> roleList = new List<RolesModel>();
roleList = RoleDefinationRelay.GetAllRoles(null);
//Bind the gridview
gvRoles.DataSource = roleList;
gvRoles.DataBind();
}
然后在你的aspx页面中: &LT; asp:GridView id =&#34; gvRoles&#34; RUNAT =&#34;服务器&#34; /&GT;
这里发生的是在page_load中获取数据,将其分配给servercontrol(设置数据源)并告诉控件呈现它(Databind)
当页面被处理时,你的代码将被触发,获取你的角色列表,这些角色将被传递给gridview,后者知道它必须为列表中的每个项目生成一个表格,并为每个属性生成一列对于每个项目......
如上所述,如果您需要对输出的HTML进行更多控制,请查看转发器和ListView控件。
希望有所帮助!