2011-04-09 75 views
0

我在我的應用程序中有以下設置,並且在傳遞用戶控件的值時遇到了一些問題。如何將值從parent.aspx頁面傳遞給用戶控件?

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

在頁面加載文本框的值是 「<%post.post_id%>」。我甚至嘗試過使用<%#post.post_id%>標籤,但是出現錯誤 - 「名稱'帖子'在當前上下文中不存在」。

有什麼建議嗎?

回答

1

我會建議移動到中繼器控件,而不是在標記代碼中使用內嵌C#。或者,你可以嘗試使用eval(雖然,不知道它會在這裏適用):

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

感謝這工作。中繼器控制非常有趣。 – solartic 2011-04-10 06:35:03

0

你試過<%= post.post_id%>?

+0

感謝您的答覆btlog,是的,我都嘗試<%: %>和<%= %>其中無一奏效。那麼他們工作只是不放在一個ASP元素內,所以」/>的作品。 – solartic 2011-04-09 22:38:52

1

數據綁定表達式語法(<%# ... %>)只能綁定到成員的頁面類。 post變量不能以這種方式訪問​​。

可以一個currentPost字段添加到您.CS文件,然後執行以下操作:

<% 
    var posts = this.getPosts(); 

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

感謝您的回覆。我的最終設置是「「Comment =」<%#currentPost%>「/>」它完美適用於post_id,但無法評論。 – solartic 2011-04-10 06:38:28

相關問題