我在我的应用程序中进行了以下设置,并且在使用我的用户控制值时遇到了一些困难。
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'。”
有什么建议吗?
答案 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;?