Как я могу получить значения формы из Content Page в ASP .NET - PullRequest
1 голос
/ 30 января 2010

У меня есть главная страница с строкой <form runat="server"> и содержимым ContentPlaceHolder.

Я пытаюсь создать страницу содержимого, используя эту главную страницу, в которой есть текстовые поля. Но я не могу получить значения этих текстовых полей, используя Request.Form["textbox"] с этой страницы. Мне нужно использовать Request.Form["ctl00$ContentPlaceHolder1$textbox"].

Это нормальный способ сделать это? Если нет, что может быть я делаю не так?

Кстати, я использую ту же страницу содержимого для обработки значений формы.

Так что я думаю, что мой вопрос на самом деле: как я могу получить доступ к значениям формы страницы содержимого на той же странице содержимого?

Ответы [ 4 ]

1 голос
/ 30 января 2010

С ASP.NET вы не должны знать или заботиться о HTTP-запросах и опубликованных значениях формы. Фреймворк инкапсулирует эти вещи, позволяя вам работать с TextBox как с компонентом в среде графического интерфейса Windows.

В своем коде вы можете получить и установить его значение с помощью свойства Text:

string whatsInThatBox = myTextBox.Text;
myTextBoxText = "Now, let's write something else here...";

Обычно вам следует заботиться о загадочных именах и идентификаторах отображаемых элементов <input>, если вам нужно добавить код на стороне клиента, ссылающийся на элементы.

1 голос
/ 30 января 2010

Предполагая, что у вас есть стандартные элементы управления ASP.Net, вы можете получить доступ к значению элемента управления в коде, используя

Dim x as string = Me.txtMyTextBox.Text

Если вы хотите использовать его в сценарии, он очень похож

<%

Dim x as string = Me.txtMyTextBox.Text

%>

Вам не нужно использовать Request.Form, потому что значения этих элементов управления поддерживаются в ViewState страницы.

0 голосов
/ 30 января 2010

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

0 голосов
/ 30 января 2010

Вы можете сделать элементы управления доступными, взять их из дизайнера и сделать их общедоступными в файле кода вашей главной страницы:

public MyMasterPageClass 
{
  public TextBox textbox;
}

Для доступа к нему на странице содержимого:

var text = ((MyMasterPageClass )Master).textbox.Text;

Или, в качестве альтернативы, в разметке вашей контентной страницы используйте директиву @ MasterType :

<%@ MasterType VirtualPath="~/masters/MyMasterPage.master”" %>

А на странице вам не нужен актерский состав:

var text = Master.textbox.Text;
...