Простая проблема ASP.NET - PullRequest
       20

Простая проблема ASP.NET

0 голосов
/ 03 декабря 2010

У меня есть две веб-формы. пример: a.aspx и b.aspx

В a.aspx у меня есть текстовое поле с ID="Textbox1". В b.aspx у меня есть ярлык с ID="Label1"

Хочу при открытии b.aspx , Label1.text = Textbox1.Text ..

но когда я пишу в b.aspx функцию Page_Load , intellisense не знает Textbox1.

Как я могу это сделать?

Ответы [ 5 ]

3 голосов
/ 03 декабря 2010

Когда пользователь запрашивает .aspx, ASP.NET создает новый экземпляр вашего Page класса (веб-формы), обрабатывает его, а затем отправляет полученный HTML-код пользователю. Наконец это уничтожает экземпляр страницы.

Когда вы нажимаете кнопку на странице ASP.NET, вы «отправляете обратно» по тому же URL-адресу (то есть вы переходите от a.aspx обратно к a.aspx). Затем ASP.NET совершает магию: отображает значения, которые пользователи вводят в элементы формы, в элементы управления на вашей странице, например Textbox1.

Для совместного использования значений на страницах вам необходимо использовать один из следующих механизмов:

  • Опубликовать прямо на страницу b. Идиоматический способ сделать это в ASP.NET см. В кросс-странице Размещение на веб-страницах ASP.NET .

  • Включить данные в сам URL , например, с помощью строки запроса:

    http://www.mysite.com/b.aspx?contents=foo

  • Сохраните данные в a сеанс переменную (или файл cookie). Это не очень хорошая идея, если значение действительно не ограничено сеансом пользователя (например, установка часового пояса). Кроме того, если важна масштабируемость, вам необходимо уделять больше внимания сеансу.

  • Сохраните данные в базе данных , затем извлеките их при построении других страниц.

0 голосов
/ 03 декабря 2010

Вы всегда можете использовать мастер-страницы и выставить общедоступное свойство на главной странице. Пусть это свойство записывает состояние просмотра страницы, и, поскольку оно общедоступно, pageA может записать значение, а pageB может прочитать значение.

0 голосов
/ 03 декабря 2010

сохранить значение в сеансе.Таким образом, пользователи могут вводить большие объемы текста, и URL не будет выглядеть уродливо.также есть ограничение на длину, разрешенную для URL.

используйте код c #, например:

// create a new Session variable to store the users name
Session ( 'SomeText' ) = 'James';

// display the name in any page on your site
Out ( 'Your value is ' + Session ( 'SomeText' ) ); 
0 голосов
/ 03 декабря 2010

Это можно сделать разными способами.Здесь я рассказываю о двух простых и простых методах 1. Вы можете отправлять значения в качестве параметра в URL, если вы собираетесь перейти на b.aspx, нажав кнопку, кнопку ссылки и т. Д. Вы можете добавить его следующим образом:

 Response.Redirect("b.aspx?val="+text1.Text);

U can able to get the value by using 
String txt=Request.QueryString["val"];
  1. Вы можете использовать переменные сеанса. Так что, если вы используете переменные сеанса, значение можно получить с любой страницы вашего веб-сайта {aspx}.

    Session ["val"] = textBox1.Текст;// 1-я страница Label1.Text = Session ["val"]. ToString (); // 2-я страница

Надеюсь, вы попробуете это

0 голосов
/ 03 декабря 2010

скорее всего, у вас есть какое-то действие, например, нажатие кнопки на a.aspx, которое приводит вас к b.aspx, верно?В функции для нажатия этой кнопки вы добавили бы содержимое текстового поля в строку запроса и перенаправили на b.aspx.

response.redirect("b.aspx?contents=" + Textbox1.text);

, а затем в b.aspx в page_load вы должны сделать:

Label1.text = request("contents");

Это то, что вы спрашиваете?Если вы не видите его в intellisense, возможно, вам просто нужно закрыть и снова открыть страницу, чтобы она синхронизировалась с файлом конструктора.

...