Не удается получить запрос Request.Form.Get со страницы aspx, которая переносится с ContentPlaceHolder (ошибка формы) - PullRequest
0 голосов
/ 28 января 2012

Я пишу веб-приложение на asp.net. У меня есть главная страница, которая содержит ContentPlaceHolder. и форма, которая обёртывает ContentPlaceHolder. На странице aspx я понимаю ContentPlaceHolder и имею некоторые элементы управления на этой странице.

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

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

спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 28 января 2012

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

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

0 голосов
/ 28 января 2012

Если вы просто пытаетесь передать значение между мастером и страницей, предполагая, что значение находится на мастере, вы можете привести 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;
...