У меня есть главная страница с разделом контента с идентификатором cpMainContent.Я использую эту мастер-страницу в каждой веб-форме, которую я создаю для проекта колледжа.Одной из таких форм является frmSearchPersonnel.Цель frmSearchPersonnel - запросить у пользователя фамилию человека, которого он хочет найти, в текстовом поле, а затем нажать кнопку поиска.Идентификатор TextBox
txtSearchName
Кнопка поиска будет выполнять передачу postbackUrl в другую форму, которую я назвал frmViewPersonnel.В frmViewPersonnel я пытаюсь использовать следующий код.
NameValueCollection myRequest = Request.Form;
if(!string.IsEmptyOrNull(myRequest["txtSearchName"]))
string strSearch = myRequest["txtSearchName"];
Проблема, с которой я столкнулся, заключается в том, что не было найдено никакого элемента управления с именем txtSearchName.Во время отладки я обнаружил это в объекте myRequest,
[5] "ctl00$cpMainContent$txtSearchName" string
Хотя при добавлении текстового поля я давал ему идентификатор txtSearchName, но при отображении страницы добавляется дополнительная строка из главной страницы.
- Как я могу это остановить?Я должен использовать главную страницу, поэтому не говорите, чтобы не использовать главную страницу:)
- Почему это происходит?
Обновление
При поиске и поиске я обнаружил, что в этом случае могу использовать Control.ClientID, так что изучите его.
Обновление 2
Как предлагается ниже, добавить ClientIDMode = "static" в HTML-элемент управления или добавить его в директиву страницы.Он сохраняет статический идентификатор для txtSearchName, но проблема в том, что
<input name="ctl00$cpMainContent$txtSearchName" type="text" id="txtSearchName" />
Здесь имя все еще использует ctl00 и код, который я показал выше,
string strSearch = myRequest["txtSearchName"]
это все ещене будет работать, потому что коллекция nvc доступна для поиска по индексу или по имени, а не по идентификатору напрямую.
==============