2012-01-28 3 views
0

Я пишу веб-приложение в asp.net У меня есть главная страница, содержащая ContentPlaceHolder и форму, которая обертывает ContentPlaceHolder , На странице aspx я реализую ContentPlaceHolder и имею некоторые элементы управления на этой странице.Не удается получить Request.Form.Get valus из страницы aspx, которая обертывает содержимое ContentPlaceHolder (ошибка формы)

Теперь, когда я пытаюсь использовать Request.Form.Get («мое управляющее имя») (из кода aspx за кодом), я получаю null. Если я попытаюсь добавить форму на странице aspx, я получаю сообщение об ошибке, которое может содержать только одну форму на странице.

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

благодарит за помощь.

+0

какой метод в форме тег, подобный метод = сообщение? – Saurabh

ответ

0

Если вы просто пытаетесь передать значение между ведущим и страницей, при условии, что значение находится на главном компьютере, вы можете присвоить значение Page.Master правильному типу. На главной странице вы можете обернуть элементы управления мастером.

MasterPage

public string MyControlText 
{ 
    get 
    { 
     return myControl.Text; 
    } 
    set 
    { 
     myControl.Text = value; 
    } 
} 

На странице

((MyMasterPage)this.Page.Master).MyControlText = "To master from page"; 

string fromMasterToPage = ((MyMasterPage)this.Page.Master).MyControlText; 
1

Request.Form("YourControlName") не будет работать с элементами управления сервером, так как ASP.NET добавляет некоторые дополнительные вещи, чтобы имя элемента управления, когда он выводит его на страницу , Он делает это, чтобы убедиться, что имя остается уникальным для всех элементов управления на странице. Так, например, ваш контроль может быть назван как «ctl00_maincontent_placeholder1_YourControlName», когда он будет создан на странице.

В ASP.NET это обычно не проблема, потому что вы обычно НЕ используете Request.Forms для получения контрольных значений. Вместо этого вы используете методы управления сервером для получения значений. Итак, для текстового поля вы должны использовать YourControlName.Text, чтобы получить значение, введенное в текстовое поле.