将强类型数据列表传递并循环到 WebForm
Pass and loop Strongly Types Data List to WebForm
我来自 MVC 背景,我可以从控制器传递模型数据列表,以结构方式查看更多信息。我现在需要知道如何将严格类型的模型数据从 C# class 传递到页面。
我正在使用 ASP.NET 3.5
型号Class
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 class...我如何在 aspx 页面中循环表单数据???
角色。aspx.cs class
protected void Page_Load(object sender, EventArgs e)
{
List<RolesModel> roleList = new List<RolesModel>();
roleList = RoleDefinationRelay.GetAllRoles(null);
}
aspx
<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>
以下是使用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();
}
}
问题是你是从 MVC 的角度考虑的 - 我有同样的问题相反,因为我在 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 页面中:
< asp:GridView id="gvRoles" runat="server" />
这里发生的事情是 page_load 您正在获取数据,将其分配给服务器控件(设置数据源)并告诉控件呈现它(数据绑定)
处理页面时,您的代码将触发,获取您的角色列表,这些角色列表将传递给 gridview,gridview 知道它必须为列表中的每个项目生成一个 table 行以及每个项目的每个 属性 一列...
正如我上面所说,如果您需要对它输出的 HTML 进行更多控制,请查看转发器和 ListView 控件。
希望对您有所帮助!
我来自 MVC 背景,我可以从控制器传递模型数据列表,以结构方式查看更多信息。我现在需要知道如何将严格类型的模型数据从 C# class 传递到页面。
我正在使用 ASP.NET 3.5
型号Class
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 class...我如何在 aspx 页面中循环表单数据???
角色。aspx.cs class
protected void Page_Load(object sender, EventArgs e)
{
List<RolesModel> roleList = new List<RolesModel>();
roleList = RoleDefinationRelay.GetAllRoles(null);
}
aspx
<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>
以下是使用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();
}
}
问题是你是从 MVC 的角度考虑的 - 我有同样的问题相反,因为我在 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 页面中: < asp:GridView id="gvRoles" runat="server" />
这里发生的事情是 page_load 您正在获取数据,将其分配给服务器控件(设置数据源)并告诉控件呈现它(数据绑定)
处理页面时,您的代码将触发,获取您的角色列表,这些角色列表将传递给 gridview,gridview 知道它必须为列表中的每个项目生成一个 table 行以及每个项目的每个 属性 一列...
正如我上面所说,如果您需要对它输出的 HTML 进行更多控制,请查看转发器和 ListView 控件。
希望对您有所帮助!