无法将变量传递给用户控件

时间:2010-06-17 15:54:02

标签: c# asp.net user-controls

我正在使用下面的示例代码,并且遇到一个问题,我无法将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"传递给Target属性。

如果我按照在线许多帖子中的说明使用此行:

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

将字符串值"<%= Request.RawUrl %>"传递给Target属性。

我需要将Request.RawUrl的值传递给Test控件对象的Target属性。有没有人有任何想法我错了?


控制:

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>

1 个答案:

答案 0 :(得分:2)

您需要在代码中调用testControl.DataBind()。 &lt;%#在调用DataBind()时设置。 &lt;%=等同于Response.Write()。