如何从父节点传递值.Aspx页面到用户控制

本文关键字:用户 控制 Aspx 父节点 | 更新日期: 2023-09-27 17:49:30

我在我的应用程序中有以下设置,我有一些困难传递值我的用户控制。

ASPX

<% 
       var posts = this.getPosts();
       foreach (var post in posts)
       { %>
            <asp:TextBox runat="server" Text="<%: post.post_id %>" />
<% } %>

c

DataClassesDataContext db = new DataClassesDataContext();
    public Post[] getPosts(int offset = 0, int lenght = 10)
    {
        var resultSet = db.Posts.OrderBy(x => x.date).Skip(offset).Take(lenght).ToArray();
        return resultSet;
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        DataBind();
    }

页面加载时的文本框值为"<% post"。post_id %>"。我甚至尝试使用<%# post。post_id %>标签,但会给出一个错误- "名称'post'在当前上下文中不存在"。

有什么建议吗?

如何从父节点传递值.Aspx页面到用户控制

我建议在您的标记代码中移动到重复器控件而不是使用内联c#。或者,您可以尝试使用Eval(尽管,不确定它是否适用于此):

<asp:TextBox runat="server" Text="<%# Eval("post.post_id") %>" />

数据绑定表达式语法( <%# ... %> )只能绑定到page类上的成员。post变量不能以这种方式访问。

可以添加一个currentPost字段到你的.CS文件,然后这样做:

<% 
   var posts = this.getPosts();
   foreach (var post in posts)
   { 
        this.currentPost = post;
        DataBind();
%>
        <asp:TextBox runat="server" Text="<%# currentPost.post_id %>" />
<% } %>

你试过<%= post吗?post_id %>吗?