2010-06-17 67 views
1

我正在使用下面的示例代码,并遇到无法将Request.RawUrl值传递给扩展Control对象(下面的类Test)的对象的问题。无法将变量传递给用户控件

当我使用该行:

<Test1:Test runat="server" ID="testControl" Target="<%# Request.RawUrl %>"></Test1:Test> 

我发现Target属性永远不会被调用。

如果我用这个行:

<Test1:Test runat="server" ID="testControl" Target="<%# Request.RawUrl %> test"></Test1:Test> 

字符串值"<%# Request.RawUrl %> test"传递给目标财产。

如果我用这条线在很多帖子在网上解释说:

<Test1:Test runat="server" ID="testControl" Target="<%= Request.RawUrl %>"></Test1:Test> 

字符串值"<%= Request.RawUrl %>"传递给目标财产。

我需要得到传递给我的测试控制对象的目标属性的Request.RawUrl的值。有没有人有任何想法,我错了?


控制:

namespace Testing 
{ 
    public class Test : Control 
    { 
     public Test() 
     { 

     } 

     private string target; 

     public string Target 
     { 
      get { return target; } 
      set { target = value; } 
     } 
    } 
} 

用户控制:

<%@ Control Language="C#" Debug="true" %> 
<%@ Register TagPrefix="Test1" Assembly="Test" Namespace="Testing" %> 

<Test1:Test runat="server" ID="testControl" Target="<%# Request.RawUrl %>"></Test1:Test> 

回答

2

你需要调用testControl.DataBind()的代码。 <%#在调用DataBind()时被设置。 <%=相当于Response.Write()。