如何将类模型对象从后面的代码传递到我的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/

10-17 01:43
查看更多