Как я могу получить значения элементов управления в опубликованной форме? - PullRequest
1 голос
/ 13 мая 2010

Я знаю, что это самый простой из когда-либо задаваемых вопросов об ASP.Net, но я сбит с толку. У меня есть форма, в которой мой посетитель будет вводить имя, адрес и т. Д. Затем я отправляю эту форму через свойство PostBackUrl моей кнопки «Отправить» на другую страницу, где все поля должны быть преобразованы в новые скрытые поля, а затем Отправлено снова в Paypal.

Моя проблема в том, что я не могу получить значения, введенные посетителем на исходной странице. Каждый раз, когда я добавляю "runat = 'server'", ASP.Net полностью меняет идентификатор элемента управления, делая невозможным выяснение способа доступа. В форме POSTed я попытался Request.Form["_txtFirstName"], и это оказалось нулевым. Затем я попытался ((TextBox)PreviousPage.FindControl("_txtFirstName")).Text, и это тоже было нулевым. Я пробовал вариации на них. Я не могу понять, как я должен получить эти средства управления. Почему этот материал должен быть таким сложным?

Ответы [ 3 ]

0 голосов
/ 13 мая 2010

В ASP.NET, если элемент управления является серверным элементом управления, вы просто вызываете его по идентификатору, данному ему при кодировании, а не по отображению.

Markup:

<input type="text" id="myId" runat="server" />

Код:

string controlValue = myId.Value;
0 голосов
/ 13 мая 2010

Вы используете MasterPages?Если это так, вы должны искать элемент управления внутри заполнителя содержимого:

0 голосов
/ 13 мая 2010

Как называется элемент управления TextBox на первой странице? Не используйте clientId, используйте идентификатор, который был объявлен при вызове FindControl, поэтому, если он называется ID = "TextBox1", используйте код ниже, чтобы найти его.

Ваш второй подход выглядит нормально, за исключением того, что вы пропустили Page.PreviousPage. Это не должно повлиять на результат. Вы включили трассировку?

Это стандартный синтаксис документов, размещенных на целевой странице ...

if (Page.PreviousPage != null)
{
    TextBox SourceTextBox = 
        (TextBox)Page.PreviousPage.FindControl("TextBox1");
    if (SourceTextBox != null)
    {
        Label1.Text = SourceTextBox.Text;
    }
}
...