例如用户控件 GetUserList.ascx
顶部声明:<%@ Register TagPrefix="UC" TagName="GetUserList" Src="Controls/GetUserList.ascx" %>页面调用:<UC:GetUserList ID="GetUserList1" StrWhere="CategoryId=<%=Request.QueryString[0]%>"runat="Server"></UC:GetUserList>
这样写得不到<%=Request.QueryString[0]%>的值
即使换作变量也得不到
<UC:GetUserList ID="GetUserList1" StrWhere="CategoryId=<%=CID%>"runat="Server"></UC:GetUserList>
请问怎么才能够给用户控件传递动态的值呢?
顶部声明:<%@ Register TagPrefix="UC" TagName="GetUserList" Src="Controls/GetUserList.ascx" %>页面调用:<UC:GetUserList ID="GetUserList1" StrWhere="CategoryId=<%=Request.QueryString[0]%>"runat="Server"></UC:GetUserList>
这样写得不到<%=Request.QueryString[0]%>的值
即使换作变量也得不到
<UC:GetUserList ID="GetUserList1" StrWhere="CategoryId=<%=CID%>"runat="Server"></UC:GetUserList>
请问怎么才能够给用户控件传递动态的值呢?
<UC:GetUserList ID="GetUserList1" StrWhere="CategoryId= <%=Request.QueryString[0]%>"runat="Server"> </UC:GetUserList>
这个传进来的参数就是StrWhere="CategoryId= <%=Request.QueryString[0]%>";也就是说<%%>里的东西直接被转义成字符串了,而没有作为表达式去执行。
StrWhere="<# GetCID()%>"
2. 在页面代码页中要有函数:
public string GetCID()
{
return "CategoryId="+ Request.QueryString[0];
}3. 在page_load中要有:
this.DataBind();
1. 在页面设计上删除
<UC:GetUserList ID="GetUserList1" ....
改为
<asp:PlaceHolder ID="PlaceHolder1" />2. 在page_load中写: GetUserList c=this.LoadControl("Controls/GetUserList.ascx") as GetUserList;
if(c!=null)
{
c.ID="GetUserList1";
c.StrWhere="CategoryId="+ Request.QueryString[0];
}
PlaceHolder1.Controls.Add(c);只有这样,用户控件在page_load执行之前才能已经得到了 StrWhere 参数的值。