Как присвоить значение свойства пользовательского элемента управления aspx или отделенному коду в VB?

У меня есть пользовательский элемент управления с общедоступным свойством, которое обновляется каждый раз, когда выбирается дата из моего календаря (часть пользовательского элемента управления). Теперь мне нужно вывести это значение на страницу, на которой хранится этот пользовательский элемент управления. Как это сделать.

Я попытался указать значение свойства в событии загрузки страницы aspx.vb (главная страница, на которой присутствует пользовательский элемент управления), но не смог этого сделать, поскольку сначала происходит загрузка страницы, а затем загружается пользовательское свойство (исключение нулевой ссылки).

я пробовал это при загрузке страницы aspx hdnPPSeq.Value = PPCalender1.test1.ToString

Пожалуйста, поделитесь идеями, чтобы перенести это значение в aspx или codebehind в vb.


person user8811    schedule 06.08.2014    source источник
comment
Реализуйте пользовательское событие со значимым именем в пользовательском элементе управления, которое возникает в событии SelectionChanged календаря. Это событие можно обработать со страницы. Прочтите: Освоение связи Page-UserControl: связь, управляемая событиями   -  person Tim Schmelter    schedule 06.08.2014
comment
календарь не является обычным календарем, это iframe, который используется во многих других областях проекта, к сожалению, не может вносить в него изменения. и я хочу знать, как перенести значение свойства пользовательского элемента управления на главную страницу.   -  person user8811    schedule 06.08.2014
comment
Не используйте Page_Load для чтения значения вашего UserControl, а событие, которое вы там обработали (которое обновляется каждый раз, когда выбирается дата из моего календаря). Затем вызовите пользовательское событие, которое может быть обработано страницей. Я подозреваю, что вы не читали ссылку, которую я разместил. Затем вы можете передать значение либо через параметр события, либо через общедоступное свойство. Я предпочитаю параметр, так как он работает, даже если у вас нет прямого доступа к файлу UserControl.   -  person Tim Schmelter    schedule 06.08.2014
comment
обновление происходит из JavaScript, который обновляет скрытое значение поля, которое снова присваивается свойству. есть ли способ поймать это значение со страницы aspx?   -  person user8811    schedule 06.08.2014
comment
мой сценарий был другим Тим, я понял это. Но сегодня я узнал кое-что новое... большое спасибо   -  person user8811    schedule 06.08.2014


Ответы (1)


Создайте метод в usercontrol, который будет возвращать значение свойства.

public partial class PassPropertyToPage : System.Web.UI.UserControl
{
    string strSelectDateTime;

    public string SelectedDateTime
    {
       set { strSelectDateTime = value; }
       get { return strSelectDateTime; }
    }

    protected void Page_Load(object sender, EventArgs e){}

    public string GetDateTime()
    {    
      strSelectDateTime = <calendar value>;
      return strSelectDateTime;
    }   

}

И на странице вызовите метод, чтобы получить значение:

public partial class AccessUserControlProperty : System.Web.UI.Page
{     
    protected void Page_Load(object sender, EventArgs e)
    {   

       Response.Write("DateTime selected in page: " + PassPropertyToPage1.GetDateTime() + "<br/>");            
    }

}
person PratikDotCa    schedule 06.08.2014