如何将类模型对象从后面的代码传递到我的aspx页面。在ASP MVC中,我可以使用视图模型轻松地做到这一点。不幸的是我被卡住了
与需要一些增强功能的ASP WebForms应用程序配合使用,我不熟悉ASP.NET WebForm和转发器控件。
protected void Page_Load(object sender, EventArgs e)
{
var orders = new List<Orders>();
// Do some stuff and get orders
var userInfo = new UserInfo()
{
Name = "Joe Blogs,
Age = "25",
Address = "123 Green Lane",
Orders = orders
};
}
我知道我可以创建服务器变量并按以下方式分别传递它们,但实际上我需要传递一个对象,因为它可能包含我需要在aspx页面中迭代的IEnumerable值。所以我正在尝试类似以下的内容:
<% foreach (var order in UserInfo.Orders) { %> <!-- loop through the list -->
<div>
<%= order %> <!-- write out the name of the site -->
</div>
<% } %>
任何帮助表示赞赏。
最佳答案
您可以具有返回对象的属性或方法,并在页面上对其进行调用。确保使用正确的标记。在数据绑定上下文中使用:
<%# GetUser() %>
在那个用途之外
<%= GetUser() %>
几个注意事项:
确保这些标签内的表达式的最终输出是字符串。
GetUser
或您不能将其称为私有在数据绑定上下文中(例如在gridview,repeater等内部),当控件绑定数据时将调用此方法
在数据绑定上下文之外,此代码将真正尽早执行-不要依靠在Page_Load上从数据库获取数据,为时已晚
但是,我想提一下,您可能想在这里重新考虑整个方法。在aspx中进行普通的foreach迭代通常是一种不好的做法。此外,将很难正确地完成此标记。当您可以将中继器绑定到数据时,为什么要这样做呢?
<asp:Repeater ID="Repeater1" ...>
<ItemTemplate>
<%# Eval("OrderName") %>
</ItemTemplate>
</asp:Repeater>
Repeater1.DataSource = userInfo.orders;
Repeater1.DataBind();
这看起来比aspx内部的任何迭代都干净得多。
关于c# - 如何将类模型/对象从代码传递到ASPX页面?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39975606/