2010-06-17 5 views
1

Я использую приведенный ниже пример кода и имею проблему, когда я не могу передать значение Request.RawUrl в объект, который расширяет объект Control (класс Test ниже).Не удается передать переменную пользовательскому элементу управления

Когда я использую строку:

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

Я считаю, что целевое свойство никогда не вызывается.

Если я использую эту линию вместо:

<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, переданное объекту Target моего объекта управления Test. У кого-нибудь есть идеи, в которых я ошибаюсь?


Контроль: Контроль

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().

Смежные вопросы