如何将parent.aspx页面中的值传递给用户控件?

时间:2011-04-09 21:29:49

标签: c# asp.net

我在我的应用程序中进行了以下设置,并且在使用我的用户控制值时遇到了一些困难。

ASPX

<% 
       var posts = this.getPosts();

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

CS

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();
    }

页面加载时的TextBox值为“&lt;%post.post_id%&gt;”。我甚至尝试使用&lt;%#post.post_id%&gt;标签,但会出错 - “当前上下文中不存在名称'post'。”

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

我建议转移到转发器控件,而不是在标记代码中使用内联C#。或者,您可以尝试使用Eval(但不确定它是否适用于此处):

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

答案 1 :(得分:1)

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

可以 .CS 文件中添加currentPost字段,然后执行此操作:

<% 
   var posts = this.getPosts();

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

答案 2 :(得分:0)

您是否尝试过&lt;%= post.post_id%&gt;?